Python 对照列表测试列表

Python 对照列表测试列表,python,python-3.2,Python,Python 3.2,我知道这里有这样一个帖子: 但是,作为一个新手(无论是在这里还是在编程方面),我不确定是否可以跳过一个3年的帖子,或者我是否需要做一个新的帖子。我为此道歉 我也检查了文档,但在阅读之后我不完全理解,为什么这段代码在运行它之后不会打印“notin selection”行 我想让它,以便用户输入测试对列表“选择”。 (假设用户只输入a到z之间的低上限) 我尝试了“a”或“test”之类的输入,但“notin selection”仍然打印出来,好像它无法识别输入一样 有人能帮我做这个吗?我正在尝试制作

我知道这里有这样一个帖子:

但是,作为一个新手(无论是在这里还是在编程方面),我不确定是否可以跳过一个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')