Validating user input strings in Python
所以我只搜索了"字符串"、"python"、"validate"、"用户输入"等词的每一个排列,但是我还没有找到一个适合我的解决方案。
我的目标是提示用户是否要使用字符串"yes"和"no"启动另一个事务,我认为字符串比较在python中是一个相当容易的过程,但有些事情并不正常。我使用的是python3.x,所以据我所知,输入应该在不使用原始输入的情况下接受字符串。
即使输入"是"或"否",程序也会始终回退无效输入,但真正奇怪的是,每次输入长度大于4个字符的字符串或int值时,它都会将其作为有效的正输入进行检查,然后重新启动程序。我还没有找到一种获得有效负输入的方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | endProgram = 0; while endProgram != 1: #Prompt for a new transaction userInput = input("Would you like to start a new transaction?:"); userInput = userInput.lower(); #Validate input while userInput in ['yes', 'no']: print ("Invalid input. Please try again.") userInput = input("Would you like to start a new transaction?:") userInput = userInput.lower() if userInput == 'yes': endProgram = 0 if userInput == 'no': endProgram = 1 |
我也试过了
1 | while userInput != 'yes' or userInput != 'no': |
我将非常感谢不仅帮助解决我的问题,而且如果有人对Python如何处理字符串有任何额外的信息,那将是非常好的。
如果有人已经问过这样的问题,我会提前道歉,但我已经尽力搜索了。
谢谢大家!
戴夫
您正在测试用户输入是
1 | while userInput not in ['yes', 'no']: |
只要稍微快一点,接近你的意图,就用一套:
1 | while userInput not in {'yes', 'no'}: |
你所用的是
接下来,使用布尔值设置
1 | endProgram = userInput == 'no' |
因为您已经验证了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | def transaction(): print("Do the transaction here") def getuserinput(): userInput =""; print("Start") while"no" not in userInput: #Prompt for a new transaction userInput = input("Would you like to start a new transaction?") userInput = userInput.lower() if"no" not in userInput and"yes" not in userInput: print("yes or no please") if"yes" in userInput: transaction() print("Good bye") #Main program getuserinput() |