所以我搜索了“string”,“python”,“validate”,“用户输入”等字样的每一个排列,但我还没有找到一个适合我的解决方案
我的目标是提示用户是否想要使用字符串“yes”和“no”启动另一个事务,我认为字符串比较在Python中是一个相当简单的过程,但是有些东西不是工作正常。我使用的是Python 3.X,因此根据我的理解,输入应该在不使用原始输入的情况下接受字符串。
即使输入“是”或“否”,程序也会始终回复无效输入,但真正奇怪的是每次输入字符串>长度为4个字符或int值,它将检查为有效的正输入并重新启动程序。我还没有找到获得有效负面投入的方法。
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
我也试过
while userInput != 'yes' or userInput != 'no':
我非常感谢不仅帮助解决我的问题,而且如果有人有任何关于Python如何处理字符串的更多信息,那将是非常好的。
如果其他人已经问过这样的问题,请提前抱歉,但我尽力搜索。
全部谢谢!
〜戴夫
答案 0 :(得分:9)
您正在测试用户输入是 yes
还是no
。添加not
:
while userInput not in ['yes', 'no']:
如此快一点,更接近你的意图,使用一套:
while userInput not in {'yes', 'no'}:
您使用的是userInput in ['yes', 'no']
,如果True
等于userInput
或'yes'
,则为'no'
。
接下来,使用布尔值设置endProgram
:
endProgram = userInput == 'no'
由于您已经确认userInput
是yes
或no
,因此无需再次测试yes
或no
来设置您的旗帜变量
答案 1 :(得分:1)
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()