Python 初学者输入验证问题

Python 初学者输入验证问题,python,Python,编写一个程序,提示用户输入一系列单词。然后,程序显示一个唯一单词列表(只出现一次的单词,即没有重复的单词) 我已经尝试摆脱输入验证,但是如果用户输入任何值。节目中断了 list5=[] 游戏结束=错误 虽然游戏结束是错误的: 用户输入=输入(“请输入一个单词:”) 列表5.追加(用户输入) keep_it_going=输入(“您想输入更多单词吗?(Y/N):”) 而len(继续前进)!=1并继续前进。降低()“y”或“n”: 打印(“您输入的值无效,请重试!”) keep_it_going=输入

编写一个程序,提示用户输入一系列单词。然后,程序显示一个唯一单词列表(只出现一次的单词,即没有重复的单词)

我已经尝试摆脱输入验证,但是如果用户输入任何值。节目中断了

list5=[]
游戏结束=错误
虽然游戏结束是错误的:
用户输入=输入(“请输入一个单词:”)
列表5.追加(用户输入)
keep_it_going=输入(“您想输入更多单词吗?(Y/N):”)
而len(继续前进)!=1并继续前进。降低()“y”或“n”:
打印(“您输入的值无效,请重试!”)
keep_it_going=输入(“您想输入更多单词吗?(Y/N):”)
如果继续运行,则.lower()=“y”:
持续
elif keep_it_going==“n”:
游戏结束=正确
我希望程序能够运行,因为我没有看到任何逻辑错误,但是一旦我为“您想输入更多单词吗?(Y/N):”,输入了一个值“Y”,程序就会告诉我输入了一个无效的值

while len(keep_it_going) != 1 and keep_it_going.lower() != "y" or "n":
这是你的问题。它既不是“y”也不是“n”才是假输入,因此您需要将其更改为以下内容:

while len(keep_it_going) != 1 or keep_it_going.lower() != "y" and keep_it_going.lower() != "n":

更改
xxx!=“y”或“n”
xxx不在(“y”、“n”)
。前两组分别为
(xxx!=“y”)或“n”
,这当然是正确的。您还有
,它们应该是
。但是,整个长度测试是多余的,请去掉它。因为这对于初学者来说可能并不明显:在python中,空字符串(
“”
)的计算结果为false,非空字符串(例如
“n”
)的计算结果为true。这仍然是一个错误的答案。看看我在原始帖子上的评论。您的测试比需要的时间长3倍。