python之購物車的編寫(熬夜擼代碼中。。。)
購物車的編寫對于我這種不是很精通函數(shù)的小白來說,簡直太難了。各種坑,各種無奈啊!不過總算也是寫出來了!
不多說,直接上代碼!
#!/usr/bin/env python
#用戶名 sanjiang
#密碼 sanjiang123
import sys
import collections
#定義一個計數(shù)器
A = 0
first = True
while first:
login_user = input('請輸入你的用戶名: ').strip()
#讀取用戶文件user.txt,用來判斷輸入的用戶是否存在
f_user = open('user.txt','r+')
user_list=f_user.read().split()
#讀取鎖定文件local_file,用來判斷輸入的用戶是否鎖定
lock = open('local_file','a+')
lock_file = lock.read().split()
#判斷用戶是否鎖定
if login_user in lock_file:
print('------------------------------------------------\n'
'對不起,你輸入的賬號已被鎖定,請用其他賬號登錄\n')
continue
#判斷用戶是否存在
elif login_user not in user_list:
print('------------------------------------------------\n'
'對不起,你輸入的用戶不存在,請重新輸入。\n')
continue
while True:
login_pwd = input('請輸入你的密碼: ').strip()
#判斷密碼是否正確
if login_pwd == user_list[ user_list.index(login_user) + 1]:
print('------------------------------------------------\n'
'親愛的%s,\n'%login_user)
first = False
break
else:
A +=1
a = 3 - A
if A ==3:
print('------------------------------------------------\n'
'對不起,你輸入的次數(shù)已經(jīng)超過三次,賬號已被鎖定\n')
#往鎖定文件中添加輸入的用戶
lock.write('%s\n'%login_user)
#關(guān)閉兩個文件
lock.close()
f_user.close()
first = True #定義一個變量用來跳出二層循環(huán)
break
print('------------------------------------------------\n '
'對不起,你輸入的密碼錯誤,請重新輸入。您還有%s次機(jī)會\n'%a)
#如果跳出第一層循環(huán)定義了跳出二層循環(huán)變量,那么就跳出第二層循環(huán)
print('''
__________________________________________________
| |
| 歡迎登陸三江水果購物商城 |
|_________________________________________________|
''')
# 定義一個本地字典
dic = {}
#!定義一個跳出循環(huán)的變量
flag1 = True
while flag1:
#!請求輸入一個購物預(yù)算
num1 = input('請輸入您的購物預(yù)算: ')
#!判斷輸入的是否為空或者是否為字符串
if len(num1)==0 or num1 =='0' or num1.isdigit() is False:
print('\033[36;1m對不起,你輸入的有誤,請重新輸入\033[0m')
continue
else:
pass
#!定義一個跳出循環(huán)的變量
flag2 = True
while flag2:
#!交互式詢問要做什么選項
num = input('''三江,你想要做什么呢? 你的預(yù)算為%s元
1:購買水果
2:購物車
3:修改購物預(yù)算
4:老板個人簡歷
5.退出程序
:'''%num1)
#!定義退出程序
if num =='5':
sys.exit()
#!顯示老板簡歷信息
if num == '4':
print('''
notice:
吳三江是一個非常的帥的一個小伙子,很有潛力的孩子,雖然現(xiàn)在有點窮,但是請莫欺少年窮。
''')
#!返回上一個循環(huán)
if num =='3':
flag2 = False
#!進(jìn)入購買水果的界面
if num == '1':
#!定義一個字典并把字典轉(zhuǎn)換成列表
local_dic= {'芒果':'7','桃李':'8','龍眼':'9','蘋果':'9','香蕉':'5','葡萄':'8','藍(lán)莓':'7','鳳梨':'7','柚子':'3','橘子':'6',
}
list1 =list(local_dic)
list2 = list(local_dic.values())
print('編號\t\t','種類\t\t','單價\t\t')
flag3 = True
while flag3:
#!展示水果的商品列表
for i in range(len(list1)):
print( 'num.%s \t\t %s \t\t %s元/斤' %(i,list1[i],list2[i]))
num2 = input('\033[36;1m請輸入你要購買的商品序號(返回上一層請按q): ')
#!定義退出這個循環(huán)
if num2 =='q':
break
#!判斷是否輸入的是字符串
if num2.isdigit() is False:
print('\033[36;1m你輸入的有誤,請重新輸入:\033[0m ')
continue
if len(num2)!=0 and int(num2)<len(list1):
#!交互式顯示購買水果的過程
num3 = input('您要購買的商品是%s,單價為%s元/斤,確定要購買么(y/n?): '%(list1[int(num2)],list2[int(num2)]))
if num3 =='n':
continue
elif num3 =='y':
num4 = input('\033[36;1m請輸入你要購買的商品數(shù)量:\033[0m')
if num4.isdigit()is False:
print('\033[36;1m對不起,你輸入的有誤,請重新輸入。\033[0m')
continue
num5 = input('您要購買的商品是%s,單價為%s元/斤,數(shù)量為%s,總價為%s,確定加入購物車么(y/n?):'%(list1[int(num2)],list2[int(num2)],int(num4),int(num4)*int(list2[int(num2)])))
if num5 =='y':
dic_list = list(dic)
dic_list2 = list(dic.values())
#!如果購買的商品不在購物車中,那么購買數(shù)量就是指定的數(shù)量
if list1[int(num2)] not in dic_list:
dic[list1[int(num2)]]=int(num4)
break
#!如果購買的商品在購物車中,那么購買的數(shù)量就是之前的商品數(shù)量加上這次的商品數(shù)量
else:
dic[list1[int(num2)]]=int(num4)+dic_list2[int(dic_list.index(list1[int(num2)]))]
elif num5=='n':
continue
else:
print('\033[36;1m你輸入的有誤,請重新輸入: \033[0m')
continue
else:
print('\033[36;1m你輸入的有誤,請重新輸入: \033[0m')
continue
else:
print('\033[36;1m你輸入的有誤,請重新輸入: \033[0m')
#!進(jìn)入購物車
if num == '2':
print('''購物車
編號 商品 單價 數(shù)量 總價\t''')
#!再次重復(fù)定義一個字典,和列表,用來調(diào)用
local_dic= {'芒果':'7','桃李':'8','龍眼':'9','蘋果':'9','香蕉':'5','葡萄':'8','藍(lán)莓':'7','鳳梨':'7','柚子':'3','橘子':'6',
}
dic_list1 = list(dic)
dic_list2 = list(dic.values())
#!顯示出購物車?yán)锩娴纳唐妨斜?br> for i in range(len(dic_list1)):
print('''
%s %s %s %s %s\t'''%(i,dic_list1[i],local_dic[dic_list1[i]],dic_list2[i],int(dic_list2[i])*int(local_dic[dic_list1[i]])))
#!求所有商品的總金額
a = 0
for i in range(len(dic_list1)):
a = a + int(dic_list2[i])*int(local_dic[dic_list1[i]])
b = a
flag4 = True
while flag4:
num6 = input('結(jié)算:t | 退出:q | 刪除訂單 :d | 修改訂單 :z\n請輸入你的操作指令:')
if num6 =='q':
flag4 =False
elif num6 =='t':
num7= input('你購買水果的總金額為%s,確定要結(jié)算么?(y/n)'%b,)
if num7 =='y':
#!如果預(yù)算小于結(jié)算的總金額,那么提示重新購買
if int(num1)<int(b):
print('對不起,超出了你的預(yù)算,請重新購買。')
flag4 = False
#!如果預(yù)算大于結(jié)算的總金額,那么會提示距離預(yù)算還有多少錢可以用
elif int(num1)>int(b):
c = int(num1)-int(b)
#!結(jié)算完可以繼續(xù)購物,也可以選擇離開
num8 = input('距離你的預(yù)算還有%s元,你還可以去買些水果哦,要離開還是繼續(xù)購物?q:離開,購物:g'%c)
if num8 =='q':
flag4=False
elif num8 =='g':
continue
else:
print('對不起。你輸入的有誤')
elif num6 =='d':
print('學(xué)藝不精,暫時不支持此功能,')
elif num6 =='z':
print('學(xué)藝不精,暫時不支持此功能,')
else:
print('對不起。你輸入的有誤')
continue
效果展示。




浙公網(wǎng)安備 33010602011771號