Python 对照列表测试列表
我知道这里有这样一个帖子: 但是,作为一个新手(无论是在这里还是在编程方面),我不确定是否可以跳过一个3年的帖子,或者我是否需要做一个新的帖子。我为此道歉 我也检查了文档,但在阅读之后我不完全理解,为什么这段代码在运行它之后不会打印“notin selection”行 我想让它,以便用户输入测试对列表“选择”。 (假设用户只输入a到z之间的低上限) 我尝试了“a”或“test”之类的输入,但“notin selection”仍然打印出来,好像它无法识别输入一样 有人能帮我做这个吗?我正在尝试制作一个刽子手游戏:) 编辑++ 我意识到我需要所有这些:“岛上的人,伊莎尔法,伊莎比特 问题是,我似乎不能把所有这些结合起来,仍然让它工作。或者想出一个更合适的方法来做到这一点 这就是我在意识到我需要将它们结合起来之前所得到的结果:Python 对照列表测试列表,python,python-3.2,Python,Python 3.2,我知道这里有这样一个帖子: 但是,作为一个新手(无论是在这里还是在编程方面),我不确定是否可以跳过一个3年的帖子,或者我是否需要做一个新的帖子。我为此道歉 我也检查了文档,但在阅读之后我不完全理解,为什么这段代码在运行它之后不会打印“notin selection”行 我想让它,以便用户输入测试对列表“选择”。 (假设用户只输入a到z之间的低上限) 我尝试了“a”或“test”之类的输入,但“notin selection”仍然打印出来,好像它无法识别输入一样 有人能帮我做这个吗?我正在尝试制作
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') #
while True:#循环以获取用户输入
用户输入=输入(“输入>”)#将输入存储在“用户输入”中
gameword=列表(用户输入)#gameword内的列表
如果用户输入=='q':#循环在输入q时结束
break#break语句
如果len(用户输入)=9:#检查字符串输入的长度
打印(“5到8个字母”)#在屏幕上打印限制
对于gameword中的我:#
如果i.islower()不在选择中#检查是否使用小写
打印(“请只打印小写字母”)#在屏幕上打印限制
对于gameword中的我:#
如果i.isalpha()不在选择项中:#检查是否使用了字母
打印(“仅限字母”)#在屏幕上打印限制
对于gameword中的我:#
如果选择中的i.isdigit():#检查单词列表中是否有数字
打印('no number plz')#
`
但它会继续打印“请只打印小写字母”,而不是只检查条件,然后打印“错误的输入消息”,然后在游戏开始前再次尝试获取输入
我希望得到更多的建议:)我们可以说
gameword
是hello
。现在如果程序搜索列表['h','e','l','l','o']
在abcdefghijklmnopqrstuvwxyz
中,它找不到它,因为整个单词不是作为一个整体出现的。您可能希望更改代码:
selection = list('abcdefghijklmnopqrstuvwxyz')
gameword = []
user_input = input('input a gameword> ')
gameword = list(user_input)
for k in gameword:
if k.lower() not in selection:
print('not in selection')
您正在检查整个列表是否在所选内容中,而不是在所选内容中。解决此问题的方法是使用for
循环来循环所选内容中的每个字符,而不是一次循环所有字符
编辑:下面是第二组代码,回答您的第二个问题:
selection = list('abcdefghijklmnopqrstuvwxyz')
gameword = []
user_input = input('input a gameword> ')
user_input = str(user_input)
gameword = list(user_input)
for k in gameword:
if k.isdigit() == True:
print('no digits please')
break
if k.isalpha() == False:
print('only alphabets please')
break
if k.islower() == False:
print('only lowercase please')
break
if k not in selection:
print('not in selection')
break
我希望我正确理解了您的问题:D选择包含一个字符列表:['a'、'b'、…、'z']
gameword
是用户键入的任何内容的列表。如果用户键入了a
,则gameword
是['a']
然后你问gameword
是否在selection
中,也就是说,selection
是否包含['a']
。但它不包含'a'
,字符,而不是['a']
,包含一个元素的列表
我猜您希望用户只需键入下一个要猜测的字母?请尝试以下操作:
selection = list('abcdefghijklmnopqrstuvwxyz')
next_letter = input('input a letter> ')
if len(next_letter) != 1:
print('Not a letter')
elif next_letter not in selection:
print('not in selection')
听起来您想验证用户输入字符串是否只包含字母字符(a-z)。为此,您可以使用string方法
if not gameword.isalpha():
print("Not all alphabetical characters")
要检查字符串是否都是小写,还可以使用该方法
要将字符串转换为所有小写字母,可以使用string.lower()方法。尝试使用类似的方法
words = 'abcdefghijklmnopqrstuvwxyz'
guess = raw_input('input a gameword> ')
if guess not in words:
print('not in selection')
您似乎正在一项列表中搜索字符串。
对于这种类型的游戏,我将使用一个元组,因为每个输入都是唯一的
selection = ('a','b','c','d')
gameword = []
....... //input game words
for word in gameword:
if word not in selection:
print('not in selection')
你说你正在制作一个刽子手游戏,那么你想检查userinput
是否是一个有效的英语单词吗?如果是,那么这将不起作用。你需要下载一个单词列表。有大量的开源资源可用
在主文件夹中将文本文件另存为“words.txt”。然后,您可以执行此操作
>>>s=set(i for i in open('words.txt'))
>>>userinput=input('Enter your word')
>>>if userinput not in s:
print('Not a valid word')
这里有一个你可以试试。请求输入,然后使用一堆if…else
语句来检查islower()、isalpha()
,等等他似乎是新来的。你可能应该编辑你的帖子,建议他可以避免使用['a'],'a'
简单地跳过他将gameword列为列表的那一行,这是一个难题。此外,如果选择列为列表,它将只对单个(小写)字母有效,而不对全部字母有效words@Sabyasachi:我想是吧。我本来打算把这个加进去的,但后来没有加进去,但现在我加了!不管怎样,我不明白他为什么需要这个(为他的刽子手游戏)。你认为他可能会把它弄糊涂,认为它是用来检查“dsadsa”是否是一个有效单词的东西吗?@Sabyasachi:也许。我不确定这就是为什么我一开始没有包括一个解决方案的原因-因为,解决方案到底是什么?谢谢你的回答和说明,这很有帮助!我需要它,因为我想让它成为现实omeone先输入一个“gameword”,然后游戏就用这个词来玩了。太好了:)记住接受并+1回答,15分钟后你的问题就解决了minutes@user3375785对于“adsdaasdd”这样的输入,您希望它显示“未在选择中”吗?更简单的方法是gameword=input('input a gameword>')
,如果不是gameword.isalpha():打印('gameword必须仅为字母')
回答到b
selection = ('a','b','c','d')
gameword = []
....... //input game words
for word in gameword:
if word not in selection:
print('not in selection')
>>>s=set(i for i in open('words.txt'))
>>>userinput=input('Enter your word')
>>>if userinput not in s:
print('Not a valid word')