免责声明:
我正在使用python 3!
基本代码:
所以我有这个代码:
def login(userlogin):
with open('usernames.txt') as input_data: # Grabs username from usernames.txt CHANGE DOESN'T WORK FOR MULTIPLE PEOPLE
for user in input_data:
if user.strip() == userlogin:
break
for user in input_data:
if user.strip() == '0':
break
print(user)
while(True):
userinput = input('')
login(userinput)
以及.txt文件在同一目录中,名为usernames.txt,您可以在此处看到:
admin010
guest020
admin01030
user040
欲望:
我希望代码根据输入的名称输出.txt文件中对应的用户名,例如,如果您输入'admin'
,它将在文本文档中找到以admin
开头的文本,并找到其结尾始终为'0'
和输出admin010
。但是,我希望它确保,当您键入admin01
时,它将输出admin01030
。所以用户名的形式为name + value
(2位数,即7的值为07)+ a zero
('0'
string)。
问题:
代码无效,无论我的输入是什么,它总是输出.txt文档中的最后一个单词。我不知道为什么,任何帮助都会很棒。
如果我了解你,可以用这种方式写得相当紧凑。
def login(userlogin):
with open('usernames.txt') as usernames:
for line in usernames:
username = line.strip()
if username.startswith(userlogin+'0') and len(username)==len(userlogin)+3:
print (username)
return
print ('no match')
for poss in ['admin', 'admin01', 'guest', 'user']:
print (poss, ': ', end=''); login(poss)
输出:
admin : admin010
admin01 : admin01030
guest : guest020
user : user040
如果格式为“name + two-digits + 0”,那么您希望将名称与少于最后三个字符的行匹配:
for user in input_data:
if userlogin == user.rstrip()[:-3] # strip trailing whitespace and remove last 3 chars
print(user)
嗨,请看下面的代码。但我需要知道为什么admin01只匹配admin01030?因为admin010也以admin01开头
def login(userlogin):
with open(
'usernames.txt') as input_data: # Grabs username from usernames.txt CHANGE DOESN'T WORK FOR MULTIPLE PEOPLE
for user in input_data:
if user.strip() == '0':
break
if user.strip().startswith(userlogin, 0, len(userlogin)):
break
print(user)
while True:
userinput = input('')
login(userinput)
你想要做的是基本上检查字符串是否有子字符串。
在下面的示例中,当按下按钮时,它会检查位于同一目录中的文件'usernames.txt'
是否具有与用户输入完全匹配的字符串,然后到达为value
和zero
保留的最后3个字母。然后将其解析为name
,value
和'0'
:
import tkinter as tk
def login():
with open('usernames.txt') as fin:
users_list = fin.readlines()
for user in users_list:
user = user.strip() # to lose \n
if user[:-3] == query.get():
nam_lbl['text'] = user[:-3]
val_lbl['text'] = user[-3:-1]
zero_lbl['text'] = user[-1]
root = tk.Tk()
query = tk.Entry(root)
nam_lbl = tk.Label(root, text="Name: ")
val_lbl = tk.Label(root, text="Value: ")
zero_lbl = tk.Label(root, text="Zero: ")
tk.Button(root, text="Login", command=login).pack()
# layout
query.pack()
nam_lbl.pack()
val_lbl.pack()
zero_lbl.pack()
root.mainloop()