我陷入了这个错误:ValueError: int() 的无效文字

问题描述 投票:0回答:1
import time
import tqdm
import alive_progress
def func():
    def bar(x, y):
        from time import sleep
        from tqdm import tqdm
        for i in tqdm(range(y)):
            sleep(x)
    
    try:
        a = int(input("Pick a number between 1 and 100 for valuable (a): "))
        print("Checking values...")
        bar(0.001, 100)

        if a < 1 or a > 100:
             while (a < 1 or a > 100):
                print("Invalid value, try again")
                a == 0
                a = int(input("Pick a number between 1 and 100 for valuable (a): "))
                print("Checking values...")
                bar(0.001, 100)  
        elif a >= 1 and a <= 100:
                print("Alright, value is in required conditions")

    except ValueError:
        a = ValueError
        while a == ValueError:
            print("Checking values...")
            bar(0.001, 100)  
            print("Invalid value, try again")
            a = int(input("Pick a number between 1 and 100 for valuable (a): "))

我想创建一个程序来检查用户的输入是否在 1 到 100 之间,我还想检查他们的输入是否是字符串,以便我可以将其转换为整数。第一次当我输入字符串时它有效,但第二次我收到此错误:

ValueError:以 10 为基数的 int() 的文字无效:'/'

我是Python新手,所以可能会犯很多错误。

我尝试了很多东西,但没有任何效果,所以请帮助我!

python-3.x valueerror
1个回答
0
投票

因此,我更改了您的一些代码只是为了使其更简单,但请随意更改任何内容或提出问题。

作为一般规则,尽量避免在 except 语句中停留太久。在这种情况下使用它们来控制流程很好,但通常允许循环返回到开头是最好的方法。我还将导入语句移至文件顶部,因为您不想每次都重新导入它们。最后,有些逻辑看起来有点复杂,所以我尝试简化一下,尽管我可能弄错了,所以请随时纠正我。其中一部分是在执行检查打印后将

a
转换为 int,这允许您延迟 except 语句的运行,直到需要它为止。

完整代码:

from time import sleep
from tqdm import tqdm


def func():
    def bar(x, y):

        for i in tqdm(range(y)):
            sleep(x)
    while 1:
        try:
            a = input("Pick a number between 1 and 100 for valuable (a): ")
            print("Checking values...")
            bar(0.001, 100)
            a = int(a)
            if a < 1 or a > 100:
                print("Invalid value, try again")
            else:
                print("Alright, value is in required conditions")

        except ValueError:
            print("Invalid value, try again")

func()
© www.soinside.com 2019 - 2024. All rights reserved.