購物程式

来源:http://www.cnblogs.com/Dreamer-qiao/archive/2017/07/24/7226793.html
-Advertisement-
Play Games

要求: Readme: 運行程式,輸入薪水,根據商品列表的序號選擇購買的商品,可以選擇多次購買,或者不購買 流程圖: 代碼: ...


要求:

  1. 啟動程式後,讓用戶輸入工資,然後列印出帶有序號的商品列表
  2. 用戶輸入商品序號購買相應的商品,或者輸入 ' q ' 退出購買界面
  3. 選擇商品後,檢查餘額是否足夠,夠則直接扣款,不夠則提示餘額不足
  4. 用戶每購買一件商品後,或者輸入 ' q ' 退出購買界面後,提示:是否繼續購買?(Y/N),實現多次購買
  5. 若用戶購買了商品,列印出購買的商品列表,總金額,餘額;若用戶沒買任何商品,列印:交易結束,購物失敗

Readme:

  運行程式,輸入薪水,根據商品列表的序號選擇購買的商品,可以選擇多次購買,或者不購買

 

流程圖:

 

 

代碼:

 1 # 簡單的購物小程式
 2 
 3 product_list = [
 4     ['surface pro 4', 7800],
 5     ['dell xps 15', 12000],
 6     ['macbook', 12000],
 7     ['小米6', 2499],
 8     ['iphone7', 4600],
 9     ['堅果Pro', 1499]
10 ]
11 shopping_list = []
12 
13 
14 # 判斷輸入的薪水格式是否正確
15 while True:
16     salary = input('\n請輸入您的薪水:')
17     if not salary.isdigit():                    # 薪水不是數字,結束迴圈
18         print('\n輸入格式有誤!請重新輸入...')
19         continue
20     break
21 
22 
23 balance = salary = int(salary)
24 
25 print('\n-----------歡迎購買------------\n')
26 
27 # 生成帶序號的商品列表
28 for index, item in enumerate(product_list):
29     print(index, item)
30 
31 
32 # 判斷輸入的序號是否符合要求
33 while True:
34 
35     while True:
36         i = input('\n輸入您要購買的商品序號,或輸入 q 取消購買:')
37         if i == 'q':                                 # 輸入 q 退出購買界面
38             while True:
39                 a = input('\n是否繼續購買?(Y/N):')
40                 if a != 'n' and a != 'N' and a != 'y' and a != 'Y':
41                     print('\n輸入格式有誤,請重試...')
42                     continue
43                 elif a == 'y' or a == 'Y':                  # 繼續購買
44                     break
45                 else:                                       # 購買完畢
46                     if balance == salary:              # 沒有買任何東西
47                         print('\n交易結束,購買失敗...')
48                         exit()
49                     else:                              # 結算   
50                         print('\n您已成功購買以下商品:\n')
51                         for item in shopping_list:
52                             print(item)
53                         print('\n共消費金額 %d 元,餘額 %d 元' % (salary - balance, balance))
54                         exit()
55             continue
56 
57         if not i.isdigit():                          # 序號不是數字,結束迴圈
58             print('\n輸入格式有誤!請重新輸入...')
59             continue
60 
61         i = int(i)
62 
63         if i < 0 or i >= len(product_list):   # 序號範圍不正確,結束迴圈
64             print('\n此商品不存在,請重新輸入...')
65             continue
66         break
67 
68     product = product_list[i]
69     price = int(product[1])
70 
71     # 判斷餘額是否充足,夠就直接扣款,不夠提醒
72     if price <= balance:
73         balance -= price
74         shopping_list.append(product_list[i])
75         print('\n您已成功購買 %s ,當前餘額為 %d 元' %(product, balance))
76     else:
77         print('\n購買失敗,您的餘額不足...')
78 
79     while True:
80         a = input('\n是否繼續購買?(Y/N):')
81         if a != 'n' and a != 'N' and a != 'y' and a != 'Y':
82             print('\n輸入格式有誤,請重試...')
83             continue
84         break
85 
86     if a == 'Y' or a == 'y':
87         continue
88     else:
89         break
90 
91 if balance == salary:
92     print('\n交易結束,購買失敗...')
93     exit()
94 else:
95     print('\n您已成功購買以下商品:\n')
96     for item in shopping_list:
97         print(item)
98     print('\n共消費金額 %d 元,餘額 %d 元' %(salary-balance, balance))
99     exit()

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 做為程式員的我們,經常會要用到文件的上傳和下載功能。到了需要用的時候,各種查資料。有木有..有木有...。為了方便下次使用,這裡來做個總結和備忘。 利用表單實現文件上傳 最原始、最簡單、最粗暴的文件上傳。 前端代碼: 【註意】 1、需要post提交 2、enctype="multipart/form ...
  • 背水一戰 Windows 10 之 控制項(媒體類): 通過處理 Pointer 相關事件實現一個簡單的塗鴉板, InkCanvas 基礎知識 ...
  • 一個基於Entity Framework的自定義分頁,增刪改的通用實現,同時包含Entity的生成,Specification模式,Unit of Work實現。 ...
  • 引子在此前的一篇文章中,我介紹瞭如何在本地docker環境中運行ASP.NET Core跨平臺應用程式(http://www.cnblogs.com/chenxizhang/p/7148657.html),看起來非常不錯,不是嗎?那麼,如果我們希望真正在實際的生產環境去部署和運行這個應用程式,應該怎... ...
  • 在上一篇的EF之DB First中,存在以下的兩個問題: 1. 添加/編輯頁面顯示的是屬性名稱,而非自定義的名稱(如:姓名、專業...) 2. 添加/編輯時沒有加入驗證 3. 數據展示使用分頁 @Html.LabelFor(model => model.Name, htmlAttributes: n ...
  • yaml文件處理(http://pyyaml.org/wiki/PyYAMLDocumentation) 摘要: 本文講的是yaml在python上的使用教程詳解, YAML是一種容易人類閱讀、適合表示程式語言的數據結構、可用於不同程式間交換數據、支持泛型工具、支持串列處理、豐富的表達能力和可擴展性 ...
  • Numpy指南筆記 第2章:Numpy基礎 創建多維數組# coding:utf-8import numpy as npm=np.array([np.arange(2),np.arange(2)])print mprint m.shape 一維數組切片和索引# coding:utf-8import ...
  • 流 數據流 用於傳輸數據。IO流 Input/Output流。數據從外部流向程式 輸入流;數據從程式流向外部的時候--輸出流。讀取一個文件 數據從文件流向程式 輸入流;向一個文件中寫入數據 數據從程式流向文件 輸出流 根據數據流動的方向:輸入流/輸出流 根據數據傳輸的形式:位元組流/字元流 輸入流 輸 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...