繁体   English   中英

将无效输入存储在 Python 列表中

[英]Store invalid input in a Python list

我知道我可以使用the try: except ValueError:处理无效输入,但是如何将该输入存储在列表或变量或其他内容中?

我希望当用户输入文本时,代码在代码的某些部分告诉“它绝对不是 [文本]”(如下面的代码所示)。 但它并没有像现在这样工作。

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()

无论用户输入来自命令行 arguments、传递的函数/方法值,还是input() function 返回的输入,您都可以创建一个列表并将无效输入添加到except子句中。

命令行 Arguments

try:
    ...
except ValueError:
    invalid_input.append(sys.argv)

Function 来电

def my_func(argument):
    try:
        ...
    except ValueError:
        invalid_input.append(argument)

输入() Function

user_input = input()
try:
    ...
except ValueError:
    invalid_input.append(user_input)

请注意,您在其中定义invalid_input的 scope 取决于您的选择。

编辑 1

由于所讨论的变量只有在它是 integer 时才“有效”,因此检查该属性是try子句中唯一需要的语句。

guesses = []
while True:
    guess = input("Guess a number")
    try:
        guess = int(guess)
    except ValueError:
        print(f"Definitely not {guess}")
        guesses.append(guess)
        continue

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM