python用字典编写购物程序_Python编写购物小程序
購(gòu)物車要求:
用戶名和密碼存放于文件中
啟動(dòng)程序后,先登錄,登錄成功則讓用戶輸入工資,然后打印商品列表,失敗則重新登錄,超過(guò)三次則退出程序
允許用戶根據(jù)商品編號(hào)購(gòu)買商品
用戶選擇商品后,檢測(cè)余額是否夠,夠就直接扣款,不夠就提醒
可隨時(shí)退出,退出時(shí),打印已購(gòu)買商品和余額
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
'''
用戶名和密碼存放于文件中
啟動(dòng)程序后,先登錄,登錄成功則讓用戶輸入工資,然后打印商品列表,失敗則重新登錄,超過(guò)三次則退出程序
允許用戶根據(jù)商品編號(hào)購(gòu)買商品
用戶選擇商品后,檢測(cè)余額是否夠,夠就直接扣款,不夠就提醒
可隨時(shí)退出,退出時(shí),打印已購(gòu)買商品和余額
'''
product_dic = { 1:['Iphone7',5800],
2:['Coffee',30],
3:['疙瘩湯',10],
4:['Python Book',99],
5:['Bike',199],
6:['ViVo X9',2499],
}
shop_list=[]
shop_dic={}
def shop():
Tag=True
remain_Balance = Balance
print("開始購(gòu)物".center(30,"="))
for key,value in product_dic.items():
print(key,value)
while Tag:
serial_number=input("輸入你要購(gòu)買商品的編號(hào)>>:").strip()
if serial_number.isdigit():
serial_number = int(serial_number)
if serial_number > 6:
print("請(qǐng)輸入1-6")
continue
elif serial_number == "q":
print("開始結(jié)算".center(20,"="))
for list in shop_list:
product_name = list[0]
product_price = list[1]
shop_dic.setdefault(product_name, {})
shop_dic[product_name].setdefault("number", 0)
shop_dic[product_name].setdefault("total", 0)
shop_dic[product_name]["price"] = product_price
if product_name in shop_dic:
shop_dic[product_name]["number"] += 1
shop_dic[product_name]["total"] = shop_dic[product_name]["price"] * shop_dic[product_name]["number"]
# 總價(jià)
total = 0
for product in shop_dic:
print(product.center(7),str(shop_dic[product]["number"]).center(7),str(shop_dic[product]["total"]).center(5))
total = total + shop_dic[product]["total"]
print("您當(dāng)前余額為{}".format(Balance).center(20))
print("您購(gòu)買總價(jià)格為{}".format(total).center(20))
print("您的剩余價(jià)格為{}".format(Balance-total).center(20))
# with open('user.txt',"r",encoding="utf-8") as read_f,open('.user.txt.swap',"w",encoding="utf-8") as write_f:
# for line in read_f:
# line = line.replace(str(Balnce),str(Balance-total))
# write_f.write(line)
# os.remove('user.txt')
# os.rename('.user.txt.swap', 'user.txt')
with open('user.txt', "r", encoding="utf-8") as read_f, open('.user.txt.swap', "w",
encoding="utf-8") as write_f:
for line in read_f:
line = line.replace(str(Balance), str(Balance - total))
write_f.write(line)
os.remove('user.txt')
os.rename('.user.txt.swap', 'user.txt')
break
elif serial_number == "exit":
print("直接退出")
else:
continue
print("你要購(gòu)買的商品編號(hào){},商品{},價(jià)格{}".format(serial_number,product_dic.get(serial_number)[0],product_dic.get(serial_number)[1]))
yes_no=input("輸入y/n,確定加入購(gòu)物車>>:")
if yes_no == "y" :
if product_dic.get(serial_number)[1] > remain_Balance:
print("您的余額不夠.無(wú)法加入到購(gòu)物車,還差{}".format(product_dic.get(serial_number)[1]-remain_Balance))
else:
shop_list.append(product_dic.get(serial_number))
remain_Balance = remain_Balance - product_dic.get(serial_number)[1]
print(shop_list,remain_Balance)
continue
elif yes_no == "n":
print(shop_list)
pass
continue
elif yes_no == "exit":
break
else:
print("非法輸入,請(qǐng)輸入y或者n")
continue
user_info={}
while True:
print('''購(gòu)物車小程序:
1、購(gòu)物
2、注冊(cè)賬號(hào)
3、充值
輸入q退出
''')
option=input("your option>>:").strip()
if not option.isdigit():
print("input 1 or 2\n")
continue
option=int(option)
if option > 2:
print("input 1 or 2\n")
continue
if option == 1:
Tag=True
count=0
while Tag:
input_user = input("your name>>:").strip()
with open("user.txt", encoding="utf-8", mode="r") as read_f:
for line in read_f:
line=line.strip("\n")
User=line.split(",")[0]
Password=line.split(",")[1]
Balance=line.split(",")[2]
if input_user == User:
user_info.setdefault(User,{})
user_info[User].setdefault("count",0)
user_info[User]["Password"]=Password
user_info[User]["Balance"]=Balance
if user_info[User]["count"] >= 3:
print("%s用戶鎖定" %(input_user))
Tag=False
break
else:
print("{}用戶不存在".format(input_user))
continue
if Tag:
input_password = input("your password>>:").strip()
if input_password == user_info[input_user]["Password"]:
print("{}用戶密碼登陸正確".format(input_user))
print("用戶:{},余額:{}".format(User, user_info[User]["Balance"]))
'''
這時(shí)候才開始購(gòu)物
'''
Balance=int(Balance)
shop()
break
else:
user_info[input_user]["count"]+=1
print("{}用戶密碼登陸錯(cuò)誤,還有{}嘗試機(jī)會(huì)".format(input_user, 3 - user_info[input_user]["count"]))
elif option == 2:
Tag=True
while Tag:
with open('user.txt', "r", encoding="utf-8") as read_f, open('.user.txt.swap', "w",encoding="utf-8") as write_f:
register_user=input("你要注冊(cè)的用戶>>:").strip()
for line in read_f:
line=line.strip("\n")
User = line.split(",")[0]
Balance = line.split(",")[2]
if register_user == User:
print("{}用戶已經(jīng)存在".format(register_user))
yn_pay=input("是否充值y/n>>:")
if yn_pay == "y":
pay_money=input("你要充值多少>>:").strip()
print(Balance,pay_money)
print(line)
line=line.replace(Balance,str(int(Balance)+int(pay_money)))
write_f.write(line)
# os.remove("user.txt")
# os.rename('.user.txt.swap', 'user.txt')
elif yn_pay == "n":
pass
os.remove("user.txt")
os.rename('.user.txt.swap', 'user.txt')
總結(jié)
以上是生活随笔為你收集整理的python用字典编写购物程序_Python编写购物小程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python3.6运行界面_Electr
- 下一篇: vmware中系统开机黑屏_macOS