【发布时间】:2023-03-15 18:45:01
【问题描述】:
我在这里知道这个帖子:Testing user input against a list in python
但是,作为新人(在这里和编程时),我不确定是否可以碰到一个 3 年前的帖子,或者我是否需要制作一个新帖子。我为此道歉。
我也检查了文档,但阅读后我不完全理解,为什么这段代码在运行后不会打印“不在选择中”这一行。
我想这样做,以便根据列表“选择”测试用户输入。 (假设用户只输入 a 到 z 之间的小写字母)
我尝试了“a”或“test”之类的输入,但“不在选择中”仍然打印出来,好像它无法识别输入一样。
有人可以帮我解决这个问题吗?我正在尝试制作一个刽子手游戏:)
selection = list('abcdefghijklmnopqrstuvwxyz')
gameword = []
user_input = input('input a gameword> ')
gameword = list(user_input)
if gameword not in selection:
print('not in selection')
编辑++
我意识到我需要所有这些:“islower, isalpha, isdigit
问题是,我似乎无法将所有这些结合起来并使其正常工作。或者想出一个更合适的方法来做到这一点。
这是我在意识到需要将它们全部组合起来之前得到的结果:
while True: # loop to get the user input
user_input = input('input> ') # store input in 'user_input'
gameword = list(user_input) # list inside gameword
if user_input == 'q': # loop ends when q is entered
break # break statement
if len(user_input) <= 4 or len(user_input) >= 9: # checks the length of the string input
print('5 to 8 letters ') # prints the restriction on screen
for i in gameword: #
if i.islower() not in selection # checks if lowercase are used
print('only low letters please') # prints the restriction on screen
for i in gameword: #
if i.isalpha() not in selection: # check if is alphabet letter are used
print('only letters') # prints the restriction onscreen
for i in gameword: #
if i.isdigit() in selection: # checks if digits are in word list
print('no numbers plz') #
`
但它会一直打印“请只用小写字母”,而不是只检查条件然后打印“错误输入消息”,然后在游戏开始前再次尝试获取输入...
我希望得到更多关于此的建议 :)
【问题讨论】:
-
您是否尝试将某些输入的字符与选择的字符进行匹配?
-
我正在尝试获取用户输入,然后检查输入的所有字母是否至少与选择中的任何一个字母匹配。但我想要限制,我正在努力将它们组合起来(islower、isalpha、isdigit)。也许我需要一个一个地问信,因为我从克劳迪乌的回答中看到了。我仍然想知道是否有办法不这样做。
标签: python python-3.2