小甲鱼第二十三讲课后作业的动手做一做,可以帮忙看看我自己的代码有什么大问题吗?
print("|---欢迎进入通讯录程序---|")print("|---1:查询联系人资料---|")
print("|---2:插入新的联系人---|")
print("|---3:删除已有联系人---|")
print("|---4:退出通讯录程序---|")
num = int(input('请输入相关指令代码:'))
dict1={}
def foo(num):
if num == 1:
print("请输入联系人姓名:",end="")
name1 = input("")
if name1 not in dict1.keys():
print('未查找到该联系人!')
else:
print(name1,":",dict1)
if num == 2:
print("请输入联系人姓名:",end="")
name2 =input("")
print("请输入用户联系电话:",end="")
phone2=int(input(""))
if name2 not in dict1.keys():
dict1='%d'%phone2
else:
print("您输入的姓名在通讯录中已存在-->",name2,':',dict1)
print('是否修改用户资料(Yes/No)',end="")
decide1 = input("")
if decide1 == 'Yes':
phone21=int(input("请输入用户联系人电话:"))
dict1='%d'%phone21
if num == 3:
name3 = input('请输入需要删除的联系人姓名:')
if name3 in dict1.keys():
dict1.pop(name3)
else:
print('查无此人!')
while num == 4:
print("|———感谢使用通讯录程序———|")
break
if num != 1 and num != 2 and num != 3 and num != 4:
print('请输入正确的代码编号')
foo(num)
while num!=4:
print("——————————————————————————————————")
num = int(input('请输入相关指令代码:'))
foo(num) 自己运行一遍,看看有没有问题 有两个问题。
第一,25行里面,使用的应该是input而不是print,并且需接受输入;
第二,36行里面,使用while虽然能正常执行,但并不建议,看起来难看。 本帖最后由 Twilight6 于 2020-5-10 23:02 编辑
20行转整型多余的操作
phone2=int(input(""))
都学23课时了 字符串的操作应该有了解吧 用str.isdigit(),建议在开始输入代码这里加入判断输入的是不是数字,
如果不是就提示输入错误,不然报错看着多难受,代码如下:
(isdigit()如果字符串只包含数字则返回 True,否则返回 False。)
while num!=4:
print("——————————————————————————————————")
num = input('请输入相关指令代码:')
if num.isdigit():
num = int(num)
foo(num)
else:
print('错误:请输入规范!')
你这里没必要把input 的值弄成int然后又用 %d 把整型的input 格式化到字符串 本来input就是字符串 无用功太多了帮你改了下也增加了输入非数字时候的提示
print("|---欢迎进入通讯录程序---|")
print("|---1:查询联系人资料---|")
print("|---2:插入新的联系人---|")
print("|---3:删除已有联系人---|")
print("|---4:退出通讯录程序---|")
num = input('请输入相关指令代码:')
dict1 = {}
def foo(num):
if num == 1:
name1 = input("请输入联系人姓名:")
if name1 not in dict1.keys():
print('未查找到该联系人!')
else:
print(name1, ":", dict1)
if num == 2:
while True:
name2 = input("请输入联系人姓名:")
phone2 = input("请输入用户联系电话:")
if phone2.isdigit():
if name2 not in dict1.keys():
dict1 = phone2
else:
print("您输入的姓名在通讯录中已存在-->", name2, ':', dict1)
decide1 = input("是否修改用户资料(Yes/No)")
if decide1 == 'Yes':
phone21 = input("请输入用户联系人电话:")
dict1 = phone21
break
else:
print('错误:输入的不是数字!请请重新输入!')
if num == 3:
name3 = input('请输入需要删除的联系人姓名:')
if name3 in dict1.keys():
dict1.pop(name3)
else:
print('查无此人!')
while num == 4:
print("|———感谢使用通讯录程序———|")
break
if num != 1 and num != 2 and num != 3 and num != 4:
print('请输入正确的代码编号')
if num.isdigit():
num = int(num)
foo(num)
else:
print('错误:输入的不是整数!请请重新输入!')
while True:
print("——————————————————————————————————")
num = input('请输入相关指令代码:')
if num.isdigit():
num = int(num)
foo(num)
else:
print('错误:输入的不是整数!请请重新输入!')
陈尚涵 发表于 2020-5-10 20:15
有两个问题。
第一,25行里面,使用的应该是input而不是print,并且需接受输入;
第二,36行里面,使用wh ...
您好,关于您的指点我明白了。
25行的输入值我放在26行的decide中了。25行print的end参数为’‘,所以会有输入值。这种写法我是见别人这么写的,用print和Input连用,来打印和接收。
您指出的第36行里面用while印象美观,我一开始也这么想,但鄙人资质愚钝,当时并未相处有什么能结束函数的方法,故用while的break方法。
多谢您的赐教。十分感谢。
如果您能指点我更好的结束函数的方法那就真的感激不尽了。 Twilight6 发表于 2020-5-10 22:31
20行转整型多余的操作
都学23课时了 字符串的操作应该有了解吧 用str.isdigit(),建议在开始输入代码这 ...
print('|‐‐‐ 欢迎进入通讯录程序 ‐‐‐|')
print('|‐‐‐ 1:查询联系人资料 ‐‐‐|')
print('|‐‐‐ 2:插入新的联系人 ‐‐‐|')
print('|‐‐‐ 3:删除已有联系人 ‐‐‐|')
print('|‐‐‐ 4:退出通讯录程序 ‐‐‐|')
dict1={}
num = input("请输入相关指令代码:")
def foo(num):
if num==1:
name1=input("请输入联系人姓名:")
if name1 not in dict1.keys():
print("未找到该联系人!")
else:
print(name1,":",dict1)
if num==2:
name2=input("请输入联系人姓名:")
phone2=input("请输入用户联系电话:")
if name2 not in dict1.keys():
dict1=phone2
else:
print("您输入的姓名在通讯录中已存在-->",name2,":",dict1)
decide1=input("是否修改用户资料(Yes/No)")
if decide1=="Yes":
phone21=input("请输入用户联系人电话:")
dict1=phone21
if num==3:
name3=input("请输入需要删除的联系人姓名:")
if name3 in dict1.keys():
dict1.pop(name3)
else:
print("您输入的用户不在联系人列表中!")
while num==4:
print("|———感谢使用通讯录程序———|")
break
if num!=1 and num!=2 and num!=3 and num!=4:
print("请输入正确的指令代码!")
if num.isdigit():
num=int(num)
foo(num)
else:
print("Error:请规范化输入!")
while num!=4:
print("——————————————————————————————————")
num = input("请输入相关指令代码:")
if num.isdigit():
num=int(num)
foo(num)
else:
print("Error:请规范您的输入!")
我重新修改了下,把您说的多余的无用功的地方划去了。
多谢您的指点。十分感谢。 Misaka2423 发表于 2020-5-10 23:25
我重新修改了下,把您说的多余的无用功的地方划去了。
多谢您的指点。十分感谢。
加油,input输出本身就是字符串,你用%来格式化也是把其他类型的东西转成字符串的,所以说一开始直接用字符串最好啦~ Twilight6 发表于 2020-5-10 23:28
加油,input输出本身就是字符串,你用%来格式化也是把其他类型的东西转成字符串的,所以说一开始直接用字 ...
好的,受教了。谢谢您。{:10_288:}
页:
[1]