输出商品列表
1:输出商品列表,用户输入序号,显示用户选中的商品
商品li = [“手机”,”电脑”,”鼠标垫”,”游艇”]
要求:1: 显示 序号+商品名称,如:
- 电脑
- 手机
2: 用户输入选择的商品序号,然后打印商品名称
3: 如果用户输入的商品序号有误,则提示输入有误,并重新输入
4: 用户输入Q或者q,退出程序
我在实际操作过程中遇到了一些问题,具体如下:
我的代码:
#输出商品列表 li = ["手机","电脑","鼠标垫","游艇"] a = list(range(1,len(li)+1)) print(a) b = dict(zip(a,li)) while 1: j = input("请输入商品序号") if j.isalpha() == True: print("您的输入有误,请重新输入:") continue elif len(j)>1: print("您的输入有误,请重新输入:") continue elif j.isalnum() == True: print(b[int(j)]) k = input("是否退出?Q/q") if k.upper() == "Q": print("谢谢使用") break elif k!= "Q": continue
开始的时候在判断时,把isalnum()的部分给忘了,都写成了isalpha()
第二个是在是否退出时,我用的是判断 k== "Q"or"q" 然后这个判断失效(具体粗知道为啥,可能是or 的原因)
在看了老师的代码之后,恍然大悟,原来把字符串变成大写在判断就能满足条件,(草,我咋没想到)
老师的代码:
while 1: li = ["手机", "电脑", "鼠标垫", "游艇"] for i in li: print("{}\t{}".format(li.index(i)+1,i)) num_of_choice = input("请输入商品序号/输入'Q'/'q'退出") if num_of_choice .isdigit(): num_of_choice = int(num_of_choice) if num_of_choice > 0 and num_of_choice <= len(li): print(li[num_of_choice - 1]) else:print("请输入有效数字") elif num_of_choice.upper() == "Q":break else:print("请输入数字")
首先,我没想到index()还可以这样用
其次,我在打印的时候也忘了format()的格式化(其实刚才写的时候format写成了fromat,我还找了半天)
然后,我也不知道还能'Q'/'q'直接用大写一起解决了
当然,有效数字的地方我用了好几行来判断
我感觉这个好深奥,我他妈这么长时间才到这个水平......

浙公网安备 33010602011771号