我知道我可以使用the try: except ValueError:
处理无效输入,但我如何将该输入存储在列表或变量或其他什么中?
我希望当用户输入文本时,代码告诉"它绝对不是[text]";在代码的某些部分(如下面的代码所示)。但它并没有按照它的方式工作。
while True:
try:
while guessedNumber != realNumber:
tries = tries + 1
checkTries()
guessedNumbers.append(guessedNumber)
os.system("clear")
print(pyfiglet.figlet_format("Try again!", font = "big"))
print("The number is:")
for x in guessedNumbers:
if x < realNumber:
print("Higher than " + str(x))
elif x > realNumber:
print("Lower than " + str(x))
elif type(guessedNumber) is not int:
print("Definitely not " + str(x)) # to solve this, maybe use another Try: except:.
guessedNumber = int(input("The number is... "))
if tries == 1:
os.system("clear")
print(pyfiglet.figlet_format("You won!", font = "big"))
print("You got it in the first try! What a lucky person!")
else:
os.system("clear")
print(pyfiglet.figlet_format("You won!", font = "big"))
print("Way to go! You got it in " + str(tries) + " tries!")
break
except ValueError:
guessedNumbers.append(guessedNumber)
playAgain()
无论用户输入是作为命令行参数,传递的函数/方法值,还是由input()
函数返回的输入,您都可以创建一个列表并将无效输入添加到except
子句中。
命令行参数
try:
...
except ValueError:
invalid_input.append(sys.argv)
函数调用
def my_func(argument):
try:
...
except ValueError:
invalid_input.append(argument)
<<h2>输入()函数/h2>user_input = input()
try:
...
except ValueError:
invalid_input.append(user_input)
注意,您定义invalid_input
的范围将取决于您的选择。
编辑1
由于所讨论的变量只有当它是整数时才"有效",因此检查该属性是try
子句中唯一需要的语句。
guesses = []
while True:
guess = input("Guess a number")
try:
guess = int(guess)
except ValueError:
print(f"Definitely not {guess}")
guesses.append(guess)
continue