输出商品列表

1:输出商品列表,用户输入序号,显示用户选中的商品

商品li = [“手机”,”电脑”,”鼠标垫”,”游艇”]

  要求:1: 显示 序号+商品名称,如:

  1. 电脑
  2. 手机

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'直接用大写一起解决了

当然,有效数字的地方我用了好几行来判断

 

我感觉这个好深奥,我他妈这么长时间才到这个水平......

 

posted @ 2019-06-16 14:37  DEVILNEVERCRY  阅读(383)  评论(0)    收藏  举报