大佬们 为啥我这代码到了第六行就会进入死循环呢
while 语句是为了可以在推出前重复输入指令 我觉得问题就发生在这 我设想是指令不等于3就应该进入if语句才对呀 但每次到这就死循环了 感觉删了这句就可以跑起来的 但是如果没有这句 怎样实现重复输入呢?user_list = []#建立用户列表
user_pw = {}#用于匹配用户名和密码
print('weilcom to FishC)\n====================\n1.sign up\n2.sign in\n3.exit')
order = input('Enter your order:')
print('====================')
while order !=3:
if order == 1:#指令为1进入用户注册
user_name = input('Enter your username:')
count = 0 #限制犯错次数
while user_name in user_list:
if count > 2:
print('死ね!')#限制犯错次数
break
else:
print('Username occupied, try anther.')#没超次数可以再次尝试
count += 1
u_passw = input('Enter your password:')
print('Congratulations.')
def sign_up(user_name, u_passw):#建立用户名和匹配密码的函数 但是前面老是死循环还没走到过这一步
user_list.append(user_name)
user_pw.fromkeys(user_name,password)
return user_pw
print(user_list,user_pw)
sign_up()
谢谢各位拉
另外我发现一个有趣的事情就是 可以用过电脑风扇判断是否进入了死循环 哈哈
首先,你的代码在 while order !=3: 这个循环的开始就出现了问题。在Python中,输入函数 input() 默认接收的是字符串类型的数据,你在进行比较时是将字符串与整数比较,这在Python中是不会相等的,所以无法跳出这个循环。你应该将 order = input('Enter your order:') 更改为 order = int(input('Enter your order:')) ,这样输入的指令就是整数类型了。
然后在你的 if order == 1: 代码块中, u_passw = input('Enter your password:') 这行代码的位置应该要在while循环的外部,也就是在用户输入用户名后。另外,你还应该在成功输入用户名后调用 sign_up 函数,并传入 user_name 和 u_passw 作为参数。
还有一个问题是在 sign_up 函数中, user_pw.fromkeys(user_name,password) 这一行。 fromkeys 方法的调用方式是错的,它的作用是创建一个新的字典,你这里应该用 user_pw = u_passw 这样的方式将密码添加到字典中。
你应该修复代码如下:
user_list = [] # 建立用户列表
user_pw = {} # 用于匹配用户名和密码
print('weilcom to FishC)\n====================\n1.sign up\n2.sign in\n3.exit')
order = int(input('Enter your order:')) # 修改这里,将输入的字符串转为整数
print('====================')
while order != 3: # 修改这里,将输入的字符串转为整数
if order == 1: # 指令为1进入用户注册
user_name = input('Enter your username:')
count = 0 # 限制犯错次数
while user_name in user_list:
if count > 2:
print('死ね!') # 限制犯错次数
break
else:
print('Username occupied, try anther.') # 没超次数可以再次尝试
count += 1
user_name = input('Enter your username:') # 修改这里,将输入用户名的代码放在这里
u_passw = input('Enter your password:') # 修改这里,将输入密码的代码放在这里
print('Congratulations.')
def sign_up(user_name, u_passw): # 建立用户名和匹配密码的函数
user_list.append(user_name)
user_pw = u_passw # 修改这里,用正确的方式添加密码到字典中
print(user_list,user_pw)
sign_up(user_name, u_passw) # 修改这里,调用函数并传入参数
最后,你可以考虑在 while order != 3: 这个循环的最后加上 order = int(input('Enter your order:')) 这行代码,这样就可以实现重复输入指令了。 order一直不是3 去掉while语句 就直接在那断了{:10_282:} user_list = [] # 建立用户列表
user_pw = {} # 用于匹配用户名和密码
print('welcom to FishC')
print('====================')
print('1.sign up')
print('2.sign in')
print('3.exit')
while True: # 进入循环
order = input('Enter your order:')
if order == '1': # 如果用户选择注册
user_name = input('Enter your username:')
count = 0 # 限制犯错次数
while user_name in user_list:
if count > 2:
print('死ね!')
break
else:
print('Username occupied, try another.')
count += 1
user_name = input('Enter another username:')
u_passw = input('Enter your password:')
user_list.append(user_name)
user_pw = u_passw# 使用 [] 来添加字典项,而非 fromkeys() 方法
print('Congratulations.')
elif order == '2': # 如果用户选择登录
user_name = input('Enter your username:')
u_passw = input('Enter your password:')
if user_pw.get(user_name) == u_passw:
print('Login success.')
else:
print('Wrong password or username!')
elif order == '3':
break # 终止循环
else: # 若输入的既不是 1,也不是 2 或者 3,则提示错误
print('Invalid command, please try again.')
isdkz 发表于 2023-6-24 20:21
首先,你的代码在 while order !=3: 这个循环的开始就出现了问题。在Python中,输入函数 input() 默认接收 ...
原来是忘了int的问题谢谢啦 基本功不好 怎么找都找不到答案 sfqxx 发表于 2023-6-24 20:26
nice 好像基本没啥问题了 我也做出了来 但是好多bug
页:
[1]