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