查找输入是否在列表中

时间:2019-03-24 11:53:52

标签: python list

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

random_number

以下是输出:

select t.* 
from test t inner join (
  select band, max(random_number) maxnum from test group by band
) g
on g.band = t.band and g.maxnum = t.random_number

2 个答案:

答案 0 :(得分:1)

首先逐行阅读文件,看看这个答案。 How to read a large file, line by line, in Python

正确的,完全Python的读取文件的方法如下:

with open(...) as f:
    for line in f:
        # Do something with 'line'

根据我的理解,您要尝试的是检查用户输入的用户名是否在列表中,而不是#Do something

第一个问题是usernab无法从usernab = print(line.strip())获得任何值,因为print()不返回任何值。相反,您应该分配usernab行,然后打印:

usernab = line.strip()
print(usernab)

第二个问题是您尝试使用x witch是要在整数范围内进行迭代的字符串。您基本上是说:“对于0到5范围内的每个字符串,请执行一些操作”。您应该使用另一个变量。

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

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

f = open("users.txt", "r")

x = str(input("Please enter a valid username: "))

i=0

for line in f:

     usernab = line.strip()
     print(usernab)

     if (x) in (usernab):
            for j in range(0,5):
                i+=1

print(i)

答案 1 :(得分:0)

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

a)默认情况下,Python的input()返回一个字符串,您无需使用字符串转换来进行转换。
b)有一种更好的方法是使用关键字“ with”在python中读取文件。
c)您使用相同的变量“ x”检查条件后要循环。好像错了!
d)回答问题: 该功能条返回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)