003_模擬購物小程序

#_*_coding:utf-8_*_
'''
寫程序:購物車程序
需求:
1.啓動程序後,讓用戶輸入工資,然後打印商品列表
2.允許用戶根據商品編號購買商品
3.用戶選擇商品後,檢測餘額是否夠,夠就直接扣款,不夠就提醒
4.用戶可一直購買商品,也可以隨時退出,退出時,打印已購買的商品和餘額
'''

import random;
print("尊敬的顧客,歡迎光臨本店!");
#讀取用戶的輸入 a=input("xxxx:")
sar = 0;
while sar <= 0 :
    try:
        sar = int(input("請輸入您的工資金額:"));
    except ValueError:
        print("請輸入數字!");
    
#定義一個商品列表
products = ["毛巾","牙膏","沐浴露","洗頭膏","電飯鍋","金龍魚","醬油","醋","足球","籃球","電冰箱","洗衣機","電視機"];
offerlist = {};
shopcart = {};

#初始化商品列表
for i,val in enumerate(products):
    price = random.randint(3,100);
    offerlist[i+1] = (val,price);

#打印商品列表:
print("======商品列表=======");
print("商品編號 \t商品名稱 \t品價格");
for i in range(len(offerlist)):
    val = offerlist.get(i+1);
    print("%d\t%s\t%d" % (i+1,val[0],val[1]));

goon = True;
mark = "";
while goon:    
    mark=input("請選擇您要購買的商品編號:");
    if mark == "quit":
        goon = False;
        break;
    
    try:
        val = offerlist.get(int(mark));
    except ValueError:
        print("請輸入正確的數字編號!");
        continue;
        
    if val:
        #當商品編號存在時,並且用戶金額不足時
        if val[1] > sar:
            print("對不起,您的當前餘額爲【%d】,無法購買該商品,請選擇其他商品或結束購買,退出請輸入 “quit”!" % sar);
            continue;
        else:
            cnt = shopcart.get(val[0]);
            shopcart[val[0]]=(cnt+1 if cnt else 1);
            sar-=val[1];
            print("您已將編號【%s】的商品【%s】加入到購物車中,當前已有%d件【%s】,您的餘額爲【%d】" % (mark,val[0],shopcart[val[0]],val[0],sar));
    else:
        print("對不起,您選擇的編號爲%s的商品不存在,請重新選擇商品或退出,退出請輸入 “quit”" % mark);

print("你購買的商品如下:")
#打印商品列表:
summary=0;
print("商品編號 \t商品名稱 \t商品單價\t商品數量\t小計");
for i,key in enumerate(shopcart):
    code = 0;
    price = 0;
    cnt = shopcart[key];
    tal = 0;
    for j in range(len(offerlist)):
        val = offerlist.get(j+1);
        if val[0] == key:
            code = j+1;
            price = val[1];
            tal = cnt*val[1];
    print("%s\t%s\t%d\t%d\t%d" % (code,key,price,cnt,tal));         
    summary+=tal;    

print("感謝您光臨本店,您本次共計消費:%d元,您的餘額爲%d源!" % (summary,sar));


=======================================執行結果================================================

總結:

1.使用隨機數需要導入類庫import ramdom,獲取一個1到100之間的整數,random.randint(1,100)

2.異常的捕獲與處理使用try except

3.while循環結構

while True/False:

    循環體....

4.列表的使用,使用[]進行聲明

增:append insert 刪:pop remove del 查:a[0] a[0:2] 改:a[0]=xx

定義一個列表:

添加一個元素“wangwu",單引號與雙引號效果相同。

在指定的位置插入一個元素:a.insert(3,'wangwu')

刪除列表中'lisi'元素:a.remove('lisi')  #按照元素值刪除,如果有多個的話順序刪除第一個。

刪除列表中倒數第二個元素(1):del a[-2]  #按照索引刪除

獲取列表中第三個元素(3):a[2] 第n個元素a[n-1]

獲取列表中'wangwu','zhangsan':列表的切片 a[3:5]

將列表中第五個元素'zhangsan'替換成'張三':a[4]='張三'

刪除列表中最後一個元素並返回:a.pop()

循環變量列表並獲取列表中元素的下標:for i,val in enumerate(a):

5.字典的使用a={xx:xxx}

字典中的key可以是數值或者字符串,但必須唯一。值可以是單個元素(字符串、數字),也可以是列表、元組、字典以嵌套形式存在。

遍歷字典中的值:

for key in a:

    val=a.get(key)

    print(key,val)

 for i in range(len(a)):
     val=a.get(i+1);
     print(key,val);

給字典中添加一個鍵值對"10:'張三'"

a[10]='宋七'

刪除key爲3的值:a.pop(3)

6.元組的定義:a=(1,2,3),元組也叫只讀列表,它存放的是一組值,一旦創建就不能修改了。

7.格式化打印:

%s:字符串佔位符

%d:數值佔位符

print("這是一個數字測試%d,這是一個字符串測試%s" % (100,'張三'));

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章