input("输入好友的信息(姓名:电话):\n") n={} while True: m=input().strip() if m.endswith('#'): break name,phone=m.split(":") n[name.strip()]=phone.strip() name = input("姓名:").strip() if name in n: print("电话:",n[name]) else: print("查无此人")
时间: 2024-02-14 16:04:52 浏览: 31
你修改后的代码已经解决了之前提到的问题,现在可以正确地将用户输入的姓名和电话存入字典 `n` 中。同时,代码还使用了更好的变量名 `m` 来代替之前的 `n`,使得代码更加清晰易懂。
这段代码仍然是一个简单的电话簿查询程序,可以让用户输入好友的信息(姓名和电话),然后通过输入姓名来查询对应的电话号码。
具体来说,代码首先创建一个空字典 `n`,然后通过一个无限循环来不断读取用户输入的好友信息。用户需要以“姓名:电话”的格式输入信息,然后程序会将姓名和电话分别提取出来,并将其作为键值对存入字典 `n` 中。如果用户输入了以“#”结尾的字符串,那么循环会终止。
接下来,程序会让用户输入要查询的姓名,并在字典 `n` 中查找对应的电话号码。如果找到了,就输出电话号码;如果没有找到,就输出“查无此人”。
总体来说,这段代码已经可以正确地实现电话簿查询的功能,不过还可以进一步优化,例如可以给用户提供更多的选项,比如可以让用户输入“添加”、“删除”等指令来对电话簿进行操作。
相关问题
input("输入好友的信息(姓名:电话):\n") n={} while True: n=input().strip() if n.endswith('#'): break name,phone=n.split(":") n[name.strip()]=phone.strip() name = input("姓名:").strip() if name in n: print("电话:",n[name]) else: print("查无此人")
这段代码是一个简单的电话簿查询程序,可以让用户输入好友的信息(姓名和电话),然后通过输入姓名来查询对应的电话号码。
具体来说,代码首先创建一个空字典 `n`,然后通过一个无限循环来不断读取用户输入的好友信息。用户需要以“姓名:电话”的格式输入信息,然后程序会将姓名和电话分别提取出来,并将其作为键值对存入字典 `n` 中。如果用户输入了以“#”结尾的字符串,那么循环会终止。
接下来,程序会让用户输入要查询的姓名,并在字典 `n` 中查找对应的电话号码。如果找到了,就输出电话号码;如果没有找到,就输出“查无此人”。
需要注意的是,代码中存在一个问题,就是将用户输入的字符串 `n` 赋值给了字典 `n`,这会导致字典 `n` 的类型从初始的空字典变成一个字符串,从而导致后续的操作出现错误。正确的做法是将用户输入的字符串拆分成姓名和电话,并将其存入字典中。
def regist(): username=input("输入用户名:") password= input("输入密码:") repassword=input("输入确认密码:") if password==repassword: with open("aaaa.txt",mode="a") as f: f.write("{} {} \n".format(username,password)) print("注册成功!") else: print("密码不一致") # regist() def login(): i=1 while True: username=input("输入ggg用户名:") password=input("输入a密码:") # while True: with open("a.txt")as s: while True: user=s.readline() input_user="{} {} \n".format(username,password) if user==input_user: print("登录成功") j='y' break else: # print("xxxxxxxx") break if j=='y': break i+=1 if i==4: print("账号锁定!") break login()改进后的代码
以下是改进后的代码:
```python
def regist():
username = input("输入用户名:")
password = input("输入密码:")
repassword = input("输入确认密码:")
if password == repassword:
with open("users.txt", mode="a") as f:
f.write("{} {} \n".format(username, password))
print("注册成功!")
else:
print("密码不一致")
def login():
i = 1
while i <= 3:
username = input("输入用户名:")
password = input("输入密码:")
with open("users.txt") as f:
for line in f.readlines():
user = line.strip().split()
if user[0] == username and user[1] == password:
print("登录成功!")
return
print("用户名或密码错误!")
i += 1
print("账号锁定!")
if __name__ == '__main__':
while True:
choice = input("请选择操作:\n1.注册\n2.登录\n3.退出\n")
if choice == '1':
regist()
elif choice == '2':
login()
elif choice == '3':
print("退出程序!")
break
else:
print("输入有误,请重新选择!")
```
改进的内容包括:
1. 将用户名和密码存储在一个文件中,以便于后续的登录验证;
2. 修改了登录函数的实现方式,使用了更加简洁和高效的方式来实现用户验证;
3. 增加了一个主函数,让用户可以选择注册、登录或退出程序;
4. 优化了代码的结构和风格,使其更加易读和易维护。
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)