如何从外部文件中读取列表,以便当我输入用户名(如果它在该外部文件上)时,将打印一个真值?
Posted
技术标签:
【中文标题】如何从外部文件中读取列表,以便当我输入用户名(如果它在该外部文件上)时,将打印一个真值?【英文标题】:How can I read a list from an external file so that when I input a username if it is on that external file a true value will print? 【发布时间】:2019-09-05 16:08:07 【问题描述】:我输入了一个用户名 - “User1” - 但是结果总是显示“User1”是一个不正确的用户名,即使它在外部文本文件中。
import random
print ("Welcome to the Music Quiz!")
username = input("please enter your Username...")
f = open("F:/GCSE/Computer Science/Programming/username.txt","r");
lines = f.readlines()
if username == "lines":
print = input("Please enter your password")
else:
print("That is an incorrect username")
如果用户名 - 用户 1 用户 2 用户 3 用户4 用户5 作为用户名输入,则输出应为“请输入您的密码”
【问题讨论】:
您检查用户名是否等于“行”作为字符串。你想要的是检查用户名是否在'行'。所以请看这里:***.com/questions/5143769/… 1) 应该是lines
而不是 "lines"
。 2) 不清楚username.txt
内部的数据结构。 3) 运行脚本时会发生什么?
【参考方案1】:
lines = f.readlines()
将创建文本文件中每一行的列表。前提是每个用户名都在单独的行上。否则,您不想逐行阅读,而是要使用其他分隔符。
您要做的是检查用户名输入是否在该列表中。所以你会想要:
if username in lines:
但问题在于它需要完全匹配。如果有多余的空格,它将失败。所以你可以做的是使用.strip()
清除任何空白。
还有另一个大问题:
print = input("Please enter your password")
您正在使用打印功能来存储您的输入字符串。当您使用 input
时,它会打印出来。然后你真正想要的是将输入存储为某种东西......我称之为password
import random
print ("Welcome to the Music Quiz!")
username = input("please enter your Username... ")
f = open("C:/username.txt","r")
# Creates a list. Each item in the list is a string of each line in your text files. It is stored in the variable lines
lines = f.readlines()
# the strings in your list (called lines), also contains escape charachters and whitespace. So this will create a new list, and for each string in the lines list will strip off white space before and after the string
users = [user.strip() for user in lines ]
# checks to see if the username input is also in the users list
if username in users:
password = input("Please enter your password: ")
else:
print("That is an incorrect username")
【讨论】:
欢迎来到音乐测验!请输入您的用户名... User2 用户名不正确 请输入您的密码: 对不起,这是我得到的结果,对于 user2,它打印的结果不正确? 是的。刚明白。我的错。我把它固定在上面 我会在代码中添加一些 cmets,以便您了解它的作用。另外,请务必接受解决方案以上是关于如何从外部文件中读取列表,以便当我输入用户名(如果它在该外部文件上)时,将打印一个真值?的主要内容,如果未能解决你的问题,请参考以下文章