#_*_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,'張三'));