1. 程式人生 > >python程式整理(1)

python程式整理(1)

'''
使用者登入驗證
要求:
1. 系統⾃動⽣成4位隨機數. 作為登入驗證碼. 直接用就好. 這里不用糾結
提示. 生成隨機數的辦法.
 from random import randint
num = 0
verify_code = ""
while num < 4:
    verify_code += chr(randint(65, 90))
    num += 1
print(verify_code) # 四位隨機驗證碼
2. 使用者輸入⽤使用者名稱和密碼還有驗證碼.
3. 使用者可以有三次登入的機會. 但是驗證碼如果輸入錯誤. 不計算在內
'''
from random import randint
#正確的使用者名稱和密碼
username = "alex"
password = "123"

count = 3
while count > 0:
  #使用者輸入使用者名稱和密碼
  uname = input("請輸入使用者名稱:")
  pwd = input("請輸入密碼:")
  
  #生成驗證碼,每次生成的都是隨機的(此處是題上提供的程式碼)
  num=0
  verify_code""
  
while num < 4:
  verify_code += chr(randint(65, 90))
  num += 1
  
# 使用者輸入驗證碼
  yzm = input("請輸入驗證碼(%s)" % verify_code)
  #判斷驗證碼是否正確
  if yzm.upper()!=verify_code:
    print("驗證碼錯誤!") #驗證碼錯誤,重新輸入,並沒有改變迴圈的次數限制,這樣驗證碼錯誤就不會計算一次登入錯誤
  else:
    if uname == username and pwd == password:
      print("登陸成功!")
      break #退出程式
    else:
      print("對不起,使用者名稱或密碼錯誤")
      count -= 1 #使用者登入失敗,次數減一
      print("還有%s次機會" % count)
'''
資料結構:
goods = [
{"name": "電腦", "price": 1999},
{"name": "滑鼠", "price": 10},
{"name": "遊艇", "price": 20},
{"name": "美女", "price": 998},
......
]

功能要求:
    基礎要求:

        1、啟動程式後,輸入使用者名稱密碼後,讓使用者輸入工資,然後列印商品列表

        2、允許使用者根據商品編號購買商品

        3、使用者選擇商品後,檢測餘額是否夠,夠就直接扣款,不夠就提醒

        4、可隨時退出,退出時,列印已購買商品和餘額

        5、在使用者使用過程中, 關鍵輸出,如餘額,商品已加入購物車等訊息,需高亮顯示


擴充套件需求:

    1、使用者下一次登入後,輸入使用者名稱密碼,直接回到上次的狀態,即上次消費的餘額什麼的還是那些,再次登入可繼續購買

    2、允許查詢之前的消費記錄

goods = [
{"name": "電腦", "price": 1999},
{"name": "滑鼠", "price": 10},
{"name": "遊艇", "price": 20},
{"name": "美女", "price": 998}
]
#使用者名稱密碼
username = "alex"
password = "123"

f = open("shopping_cart.txt",mode="r",encoding="utf-8")
#從檔案中讀取到上次的餘額,建立了一個檔案
"shopping_cart.txt"
money = int(f.readline().strip().split(":")[1])
#賬戶內的錢
# 購物車
# [{'id': 0, 'name':'電腦', 'price': 1999, 'totle': 10}]
# [{'id': 編號, 'name':'商品', 'price': 價格, 'totle': 數量}]
# 從檔案中讀取到購物車內的資料
shoppingcart = eval(f.readline().strip())

f.close()

# 登入.
while 1:
uname = input("請輸入你的使用者名稱, 輸入Q退出系統:")
if uname.upper() == 'Q':
print("系統退出")
break
pwd = input("請輸入你的密碼:")
if uname == username and pwd == password:
print("恭喜你. 登入成功")
_money = int(input("您當前的餘額是:%s, 輸入任意數字進行充值, 輸入0不充值: " % money))
money += _money
while 1:

# 商品列表
for i in range(len(goods)):
print("%s, 商品: %s, 價格: %s" % (i+1, goods[i]['name'], goods[i]['price']))

# 使用者輸入要購買的商品編號
num = int(input("請輸入您想要購買的商品編號:"))

# 獲取到使用者購買的商品
good = goods[num - 1]

# 校驗是否可以購買
if money < good['price']: # 商品價格
print("對不起, 餘額不足! 您當前的餘額是%s 請購買其他商品!" % money)
continue # 重新顯示商品列表
else:
for g in shoppingcart:
if g['id'] == num - 1: # 檢視購物車中是否已經擁有已經夠買了的商品
g['totle'] += 1 # 已經有了. 數量加1就可以了
break # 結束購物車的新增
else: # 購物車裡沒有該商品.
# 將第一次購買的商品新增到購物車
shoppingcart.append({'id': num-1, 'name': good['name'], 'price': good['price'], 'totle': 1})

money = money - good['price'] # 扣款

# 提示使用者購買成功
print("購買%s商品成功, 花費%s元, 您的餘額是: %s" % (good['name'], good['price'], money))

# 判斷是否繼續購物
isContinue = input("請問是否繼續購物. 輸入任意內容繼續, 輸入N結束購物(N)")
if isContinue.upper() == 'N':
print("結束購物")
# 購物流程結束. 列印購物已經購買的商品和餘額. 此處可以寫在"結束購物"位置
print("您的餘額是%s" % money)

print("商品編號\t商品名稱\t商品單價\t購買數量\t花費金額")
for good in shoppingcart:
print("%s\t%s\t%s\t%s\t%s" % (
good['id'], good['name'], good['price'], good['totle'], (good['price'] * good['totle'])))

# 將購物車中的內容和餘額寫入到檔案中
f = open("shopping_cart.txt", mode="w", encoding="utf-8")
f.write("money:%s\n" % money)

f.write(str(shoppingcart))
f.flush()
f.close()
print("程式退出. 歡迎下次光臨!")

exit() # 結束購物

else:
print("對不起, 登入失敗")