作業(yè)要求:
1塑猖、啟動(dòng)程序后谈跛,輸入用戶名密碼登錄
2、顯示用戶余額
3蜡励、打印商品列表
4、允許用戶根據(jù)編號(hào)購(gòu)買商品(臥槽凉倚,沒(méi)有看到嫂沉,下次更新)
5、用戶選擇商品后趟章,檢測(cè)余額是否足夠
6慎王、扣除宏侍,不夠就提醒余額不足
7、扣除谅河,夠就扣款,更新余額信息
Python Code
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time : 2017/8/7 9:45
# @Author : Shope
# @QQ :215522879
# @My Blog : http://blog.sina.com.cn/u/2047118510
# @File : shoping.py
# @Software: PyCharm
# user=list()
# fruit={}
# k=1
# v=1
# i=0
# flag=True
# count=0
# choice,list1=[],[]
# sum1,sum2,sum3=0,0,0
# m,l1=0,0
# with open('message.txt','r') as f:
# # frist=f.readline()
# # print(frist[1][0:])
# for line in f:
# # frist=f.readline()
# # print(frist)
# user.append(line.strip().split())
# print(user)
def fruit_def():
k = 1
v = 1
global fruit
fruit={}
# 輸出所有商品信息:
with open('shop.txt', 'r') as f:
for line in f:
k, v = line.strip().split()
fruit[k] = v
#print(fruit)
print("商品信息:")
for k1 in fruit:
print("%s:%s¥" % (k1, fruit[k1]))
#print(fruit['BitterOrange'])
def choice_def():
choice, list1 = [], []
sum1, sum2, sum3 = 0, 0, 0
m, l1 = 0, 0
# 購(gòu)買選擇
while True:
goods = raw_input("請(qǐng)輸入選擇商品(N/n退出):")
if goods == 'n' or goods == 'N':
# print("歡迎下次使用!")
break
else:
for k1 in fruit:
if goods == k1:
break
else:
print("商品不存在锨天!請(qǐng)重新選擇")
continue
amount = input("請(qǐng)輸入購(gòu)買商品數(shù)量:")
# 判斷購(gòu)物車是否為空剃毒,為空的話將購(gòu)買商品加入購(gòu)物車
if len(choice) == 0:
list1 = [goods, int(fruit[goods]), amount, amount * int(fruit[goods])]
else:
# 檢測(cè)如果商品存在,輸入的參數(shù)替換之前的參數(shù)
for m in range(len(choice)):
print(choice[m][0])
if goods == choice[m][0]:
#print(222)#調(diào)試使用赘阀,看是否循環(huán)到這里
#print m
choice[m][0:] = [goods, int(fruit[goods]), amount, amount * int(fruit[goods])]
# 否則的就將新的商品錄入list1列表
else:
list1 = [goods, int(fruit[goods]), amount, amount * int(fruit[goods])]
# 判斷商品是否存在,存在就跳過(guò)幅慌,不存在就添加到購(gòu)物車
for m1 in range(len(choice)):
if goods == choice[m1][0]:
break
else:
choice.append(list1)
print("已選商品信息:%s轰豆,價(jià)格:%s,數(shù)量:%s酸休,總價(jià):%s" % (goods, int(fruit[goods]), amount, amount * int(fruit[goods])))
print("你已選擇%s種商品" % len(choice))
# 結(jié)算
if len(choice) > 0:
print("[商品,單價(jià)斑司,數(shù)量,總價(jià)]")
for l in choice:
print(l)
sum1 = sum1 + l[2]
sum2 = sum2 + l[2] * l[1]
print("總量:%s,總價(jià):%s" % (sum1, sum2))
sum3 = int(bal) - sum2
# print(sum3)
exit1 = raw_input("輸入Y\y確認(rèn)交易互站,輸入其他取消交易:")
if exit1 == 'y' or exit1 == 'Y':
if sum3 > 0:
print("你要有可用余額%s" % sum3)
# 更新用戶余額信息
with open("message.txt", "r+") as f:
line1 = f.readlines()
# 將原來(lái)的文件讀取出來(lái)僵缺,寫(xiě)入line1里面
with open("message.txt", "w+") as f:
# 將line1里面的每一行分別賦值給line,for循環(huán)
for line in line1:
if line.find(user) >= 0:
# 如果循環(huán)到當(dāng)前用戶谤饭,執(zhí)行余額替換懊纳,更改余額信息
s = line.replace(str(bal), str(sum3))
f.writelines(s)
continue
# continue跳出循環(huán)亡容,繼續(xù)將其余的line寫(xiě)入message.txt文件
f.writelines(line)
else:
print("金額不足!C俊!=拍摇M┐拧!")
else:
print("歡迎下次使用我擂!")
#login用戶登錄:
def main():
global user
user = list()
i = 0
flag = True
global bal
bal=0
with open('message.txt', 'r') as f:
while flag == True and i < 3:
name = raw_input("請(qǐng)輸入用戶:")
psd = raw_input("請(qǐng)輸入密碼:")
for line in f:
user, passwd, bal = line.strip().split()
#bal1=int(bal)
if name == user and psd == passwd:
print("歡迎使用某某某超市系統(tǒng)!看峻!")
print("%s賬戶余額%s¥\n" % (user, bal))
flag = False
fruit_def()
choice_def()
break
if flag == True:
i += 1
print("重新輸入用戶衙吩!")
else:
break
if i < 1:
pass
else:
print("失敗次數(shù)過(guò)多,請(qǐng)下次再來(lái)坤塞!")
if __name__ == '__main__':
main()
message.txt文件用來(lái)記錄用戶信息
用戶、密碼尺锚、余額
shope 123456 287
alex 654321 6451
eric 111111 10571
S 1 9907
執(zhí)行情況:
C:\Python27\python.exe F:/python/oldboy12/day2/shoping_homewk.py
請(qǐng)輸入用戶:shope
請(qǐng)輸入密碼:123456
歡迎使用某某某超市系統(tǒng)!伏嗜!
shope賬戶余額827¥
商品信息:
BitterOrange:22¥
Gooseberry:6¥
Cranberry:33¥
Avocado:7¥
Walnut:15¥
Papaya(Pawpaw):37¥
Melon:19¥
Loquat:41¥
Tangor:13¥
Sapodilla:43¥
Orange:5¥
Lemon:38¥
Pear:24¥
Blueberry:23¥
Chestnut:27¥
Cumquat:21¥
Honey-dew:14¥
Sugarcane:11¥
FlatPeach:40¥
Rambutan:17¥
CustardApple:8¥
LotusNut:28¥
Peanut:18¥
Olive:12¥
Raspberry:10¥
A:5¥
C:7¥
B:6¥
E:9¥
D:8¥
Foxnut:20¥
Plum:25¥
Water-chestnut:32¥
Strawberry:4¥
Mango:34¥
Blackberry:16¥
Pineapple:3¥
Betelnut:2¥
Apple:1¥
WildPeach:35¥
Bilberry:39¥
WaterCaltrop:29¥
Sorosis:44¥
KiwiFruit:36¥
Grape:42¥
Lichee:26¥
Guava:9¥
Durian:30¥
Longan:31¥
請(qǐng)輸入選擇商品(N/n退出):A
請(qǐng)輸入購(gòu)買商品數(shù)量:100
已選商品信息:A伐厌,價(jià)格:5,數(shù)量:100挣轨,總價(jià):500
請(qǐng)輸入選擇商品(N/n退出):B
請(qǐng)輸入購(gòu)買商品數(shù)量:20
已選商品信息:B,價(jià)格:6荡澎,數(shù)量:20,總價(jià):120
請(qǐng)輸入選擇商品(N/n退出):C
請(qǐng)輸入購(gòu)買商品數(shù)量:30
已選商品信息:C摩幔,價(jià)格:7,數(shù)量:30或衡,總價(jià):210
請(qǐng)輸入選擇商品(N/n退出):D
請(qǐng)輸入購(gòu)買商品數(shù)量:20
已選商品信息:D,價(jià)格:8斯辰,數(shù)量:20坡疼,總價(jià):160
請(qǐng)輸入選擇商品(N/n退出):A
請(qǐng)輸入購(gòu)買商品數(shù)量:10
已選商品信息:A彬呻,價(jià)格:5回梧,數(shù)量:10祖搓,總價(jià):50
請(qǐng)輸入選擇商品(N/n退出):N
你已選擇4種商品
[商品,單價(jià)拯欧,數(shù)量,總價(jià)]
['A', 5, 10, 50]
['B', 6, 20, 120]
['C', 7, 30, 210]
['D', 8, 20, 160]
總量:80,總價(jià):540
287
輸入Y\y確認(rèn)交易藏姐,輸入其他取消交易:Y
你要有可用余額287