如何从外部文件中读取列表,以便当我输入用户名(如果它在该外部文件上)时,将打印一个真值?

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,以便您了解它的作用。另外,请务必接受解决方案

以上是关于如何从外部文件中读取列表,以便当我输入用户名(如果它在该外部文件上)时,将打印一个真值?的主要内容,如果未能解决你的问题,请参考以下文章

C++:从文件/用户名和密码读取

如何将用户输入从节点服务器传递到外部 api 调用?

从文件中写入和读取列表

如何在python中读取和写入字典到外部文件? [复制]

如何从 openlayers 读取外部 GeoJSON 文件?

如何配置matplotlib以便能够从本地路径读取字体?