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新手,所以可能会犯很多错误。
我尝试了很多东西,但没有任何效果,所以请帮助我!
因此,我更改了您的一些代码只是为了使其更简单,但请随意更改任何内容或提出问题。
作为一般规则,尽量避免在 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()