文件檔案
亲爱的鱼友可以帮我看看这题的问题吗{:5_100:} ,1. 我想要在档案文件中读取,在终端输入的帐号名称有没有跟档案文件的帐号名称一样,有的话显示此用户名称已被使用
2.我发现我的代码只能读取一行
def registered():
register_aacount = input("輸入要註冊的帳號:")
sigh_up_password = input("輸入註冊的密碼:")
repassword = input("確認密碼:")
if sigh_up_password == repassword:
with open('users.txt', 'a+') as asteram:
while True:
asteram.seek(0)
answer = asteram.readline()
if register_aacount not in answer:
input_user = '{} {} \n'.format(register_aacount, sigh_up_password)
asteram.write(input_user)
print("註冊成功")
break
else:
print("此帳號已被使用")
break
else:
print("密碼錯誤")
registered()
因为你使用的是 readline 每次只读取一行,而且你每次循环都重新把指针移动到开始了呀
导致每次读完一行 然后下一次循环开始被你移动回文件开头 又重新读了这一行
去掉应该就能正常运行了:
def registered():
register_aacount = input("輸入要註冊的帳號:")
sigh_up_password = input("輸入註冊的密碼:")
repassword = input("確認密碼:")
if sigh_up_password == repassword:
with open('users.txt', 'a+') as asteram:
while True:
answer = asteram.readline()
if register_aacount not in answer:
input_user = '{} {} \n'.format(register_aacount, sigh_up_password)
asteram.write(input_user)
print("註冊成功")
break
else:
print("此帳號已被使用")
break
else:
print("密碼錯誤")
registered()
不行欸qq TsaiYen 发表于 2020-6-10 23:00
不行欸qq
你把你部分测试的txt文件内容复制上来 我测试下 Twilight6 发表于 2020-6-10 23:05
你把你部分测试的txt文件内容复制上来 我测试下
文件里是空的,文件名是users.txt TsaiYen 发表于 2020-6-10 23:09
文件里是空的,文件名是users.txt
现在可以了
def registered():
register_aacount = input("輸入要註冊的帳號:")
sigh_up_password = input("輸入註冊的密碼:")
repassword = input("確認密碼:")
if sigh_up_password == repassword:
with open('users.txt', 'a+') as asteram:
asteram.seek(0)
for answer in asteram:
print(answer)
if register_aacount not in answer:
input_user = '{} {} \n'.format(register_aacount, sigh_up_password)
asteram.seek(0,2)
asteram.write(input_user)
print("註冊成功")
break
else:
print("此帳號已被使用")
break
else:
print("密碼錯誤")
registered() TsaiYen 发表于 2020-6-10 23:09
文件里是空的,文件名是users.txt
你原来的代码只要把seek 函数移到循环外 也是正确的
def registered():
register_aacount = input("輸入要註冊的帳號:")
sigh_up_password = input("輸入註冊的密碼:")
repassword = input("確認密碼:")
if sigh_up_password == repassword:
with open('users.txt', 'a+') as asteram:
asteram.seek(0)
while True:
answer = asteram.readline()
if register_aacount not in answer:
input_user = '{} {} \n'.format(register_aacount, sigh_up_password)
asteram.write(input_user)
print("註冊成功")
break
else:
print("此帳號已被使用")
break
else:
print("密碼錯誤")
registered() Twilight6 发表于 2020-6-10 23:24
你原来的代码只要把seek 函数移到循环外 也是正确的
很像还是有点问题,指针会乱跑,还有如果文件为空,输入帐号密码终端会停住
头疼呀.. TsaiYen 发表于 2020-6-10 23:36
很像还是有点问题,指针会乱跑,还有如果文件为空,输入帐号密码终端会停住
头疼呀..
你要指针固定在哪?
你希望达到的目的要说清楚哦,你是想一直循环注册账号和输入账号? Twilight6 发表于 2020-6-10 23:52
你要指针固定在哪?
你希望达到的目的要说清楚哦,你是想一直循环注册账号和输入账号?
我要写一个图书管理系统,那我要让用户注册帐号,注册之后的帐号,把它存在文件档案中,然后其他使用者在注册的时候如果帐号名称已经存在,在文件档案中,将显示此用户名称已被使用
萬分感謝你!!!!
TsaiYen 发表于 2020-6-10 23:57
我要写一个图书管理系统,那我要让用户注册帐号,注册之后的帐号,把它存在文件档案中,然后其他使用者在 ...
是在已经使用的那行末尾追加 此用户名称已被使用 吗? Twilight6 发表于 2020-6-11 00:09
是在已经使用的那行末尾追加 此用户名称已被使用 吗?
就是判断使用者输入要注册的帐号,是不是存在于文件档案中,如果是就会打印此用户名称已被使用。
**例如: 资料库里已经有1230这四位数的帐号,但其他使用者也要注册1230,就会打印此用户名称已被使用 TsaiYen 发表于 2020-6-11 00:19
就是判断使用者输入要注册的帐号,是不是存在于文件档案中,如果是就会打印此用户名称已被使用。
**例如 ...
在文件档案中,将显示此用户名称已被使用
我看你这句话 以为要把已经被注册写进文档....晕 Twilight6 发表于 2020-6-11 00:23
我看你这句话 以为要把已经被注册写进文档....晕
文字比较难沟通哈哈 TsaiYen 发表于 2020-6-11 00:27
文字比较难沟通哈哈
这样可行不?
def registered():
register_aacount = input("輸入要註冊的帳號:")
sigh_up_password = input("輸入註冊的密碼:")
repassword = input("確認密碼:")
if sigh_up_password == repassword:
with open('users.txt', 'a+') as asteram:
asteram.seek(0,0)
answer = asteram.read().split('\n')
for i in answer:
if register_aacount not in i:
continue
else:
print("此帳號已被使用")
break
else:
input_user = '{} {}\n'.format(register_aacount, sigh_up_password)
asteram.write(input_user)
print("註冊成功")
else:
print("密碼錯誤")
judge = 'Y'
while judge == 'Y':
registered()
judge = input('是否要继续註冊帳號(输入Y继续注册)?')
Twilight6 发表于 2020-6-11 00:38
这样可行不?
感謝改成這樣就是了!!!
萬分感謝{:5_105:}
我的代碼是哪裡有問題呀..
def registered():
register_aacount = input("輸入要註冊的帳號:")
sigh_up_password = input("輸入註冊的密碼:")
repassword = input("確認密碼:")
length = len(register_aacount)
if sigh_up_password == repassword:
with open('users.txt', 'a+') as asteram:
asteram.seek(0,0)
answer = asteram.read().split('\n')
for i in answer:
if register_aacount not in i[:length]:
continue
else:
print("此帳號已被使用")
break
else:
input_user = '{} {}\n'.format(register_aacount, sigh_up_password)
asteram.write(input_user)
print("註冊成功")
else:
print("密碼錯誤")
judge = 'Y'
while judge == 'Y':
registered()
judge = input('是否要继续註冊帳號(输入Y继续注册)?')
页:
[1]