Python 查找输入是否在列表中

Python 查找输入是否在列表中,python,list,Python,List,尝试从用户处获取输入(计算机接受),然后检查是否在列表中。然后,它开始玩游戏。有什么建议吗 if answer == "2": f = open("users.txt", "r") x = str(input("Please enter a valid username: ")) for line in f: usernab = print(line.strip()) if (x) in (usernab):

尝试从用户处获取输入(计算机接受),然后检查是否在列表中。然后,它开始玩游戏。有什么建议吗

if answer == "2":
    f = open("users.txt", "r")    
    x = str(input("Please enter a valid username: "))
    for line in f:
         usernab = print(line.strip())
         if (x) in (usernab):
                for x in range(0,5):
                       #Do something.
以下是输出:

回溯(最近一次呼叫最后一次):
文件“E:/NEA/Project/backup.py”,第20行,在
如果(x)在(usernab)中:
TypeError:类型为“NoneType”的参数不可编辑

首先,逐行阅读一个文件,看看这个答案。

读取文件的正确且完全符合Python的方式如下:

打开(…)作为f的
:
对于f中的行:
#用“线”做点什么
据我所知,您要做的是检查用户输入的用户名是否在列表中,然后执行操作

第一个问题是,usernab没有从
usernab=print(line.strip())
获取任何值,因为
print()
不返回任何内容。相反,您应该指定
usernab
行,然后打印它:

usernab=line.strip()
打印(usernab)
第二个问题是,您试图使用
x
witch,它是一个字符串,用于在整数范围内迭代。您基本上是说:“对于0到5范围内的每个字符串,#做点什么”。您应该使用另一个变量

此外,
if(x)in(usernab)
将检查usernab是否包含x。根据您想做什么,您可能需要更改此设置

这段代码在Python 3.7下编译。它会将
1
添加到
i
五次,每次在一行中找到
x

f=open(“users.txt”,“r”)
x=str(输入(“请输入有效用户名:”)
i=0
对于f中的行:
usernab=line.strip()
打印(usernab)
如果(x)在(usernab)中:
对于范围(0,5)内的j:
i+=1
印刷品(一)

除了答案之外,还有几点:

a) Python的input()默认返回字符串,您不需要使用字符串转换进行转换。
b) 有一种更好的方法可以使用关键字“with”读取python中的文件。
c) 在使用相同的变量“x”检查条件后,您正在迭代一个循环。似乎不对
d) 要回答这个问题: 函数strip返回None,您正试图对其进行迭代,因此会出现错误。相反,您可以直接将代码替换为:

answer = "2"
if answer == "2":
    f = open("users.txt", "r")    
    x = input("Please enter a valid username: ")
    for line in f:

         if (x) in (line.strip()):
                for i in range(0,5):
                    print('Hi',x)


您的
users.txt
中是否有空行?没有空行。请将
usernab=print(line.strip())
更新为
usernab=line.strip()
可能重复的