最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)ATM系統(tǒng)

 更新時間:2020年02月17日 11:47:47   作者:我和我的口袋裙  
這篇文章主要為大家詳細介紹了Python實現(xiàn)ATM系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

今天偶爾在知乎上看到某大佬用Python寫的ATM系統(tǒng)案例,然后觀摩了下他的實現(xiàn)思路和源碼,感覺受益頗多,于是就根據(jù)自己的思路和目前掌握的Python編程基礎將ATM實現(xiàn)了一下,以下是案例解析的過程:

案例剖析:

1.atm主頁面顯示.
2.賬號驗證.
3.查詢余額.
4.存款.
5.取款.
6.修改密碼.

ps:我的思路是將以上的功能分成幾大塊,通過函數(shù),循環(huán)和返回值來實現(xiàn),話不多說直接上代碼.

代碼:

1.atm主頁面顯示

def index(nowUser):
 print('=' * 10, '自動存取款機', '=' * 10)
 print(getName(nowUser), '歡迎登陸!')
 print('{:<10}{:^10}{:<10}'.format('1.修改密碼', ' ', '2.查詢余額'))
 print('{:<10}{:^12}{:<10}'.format('3.存錢', ' ', '4.取錢'))
 print('輸入\'exit\'退出操作')

ps:使用format來進行格式的定義.

2.賬號驗證

def getId(nowUser):
 '''獲取當前用戶在列表中的位置'''
 index = -1
 for i in range(len(userList)):
  if userList[i]['cardid'] == nowUser:
   index = i # 如果用戶存在則返回它在列表中的下標
   break
 return index # 如果用戶不存在則返回-1


def getName(nowUser):
 ''' 獲取用戶姓名'''
 index = getId(nowUser)
 return userList[index]['name']


def checkUser(cardid, password):
 '''自定義用戶檢測功能,包括卡號及密碼檢測'''
 index = getId(cardid)
 if index == -1: # 如果用戶不存在
  return 'noCardId' # 卡號不存在
 else:
  if userList[index]['cardid'] == cardid and userList[index]['password'] == password: # 用戶存在并且賬號密碼正確
   return 'login' # 密碼正確
  else:
   return 'errorPW' # 密碼錯誤

ps:使用循環(huán)和返回值來進行賬號的對比和檢測.

3.查詢余額

def showMoney(nowUser):
 '''查詢余額'''
 index = getId(nowUser)
 print('您當前的賬戶余額為:', userList[index]['money'], '元')

4.存錢

def saveMoney(nowUser, money):
 '''存錢'''
 index = getId(nowUser)
 print("輸入的金額是:", money)
 userList[index]['money'] += int(money)
 print('存入成功!')

5.取錢

def drawMoney(nowUser, money):
 '''取錢'''
 index = getId(nowUser)
 nowMoney = userList[index]['money']
 if nowMoney >= int(money):
  userList[index]['money'] -= int(money)
  print('已取出', money, '元')
 else:
  print('賬戶余額不足!')

6.修改密碼

def changePW(nowUser, newPW):
 '''修改密碼'''
 index = getId(nowUser)
 userList[index]['password'] = newPW

7.定義用戶操作函數(shù)

# 用戶操作
def userChoice(nowUser):
 choices = ['1', '2', '3', '4', 'exit']
 # 循環(huán)獲取用戶操作
 while True:
  index(nowUser)
  choice = input('請選擇操作:')
  if choice == '1': # 選擇修改密碼
   oldPW = input('請輸入原始密碼:')
   flag = checkUser(nowUser, oldPW)
   if flag == "errorPW":
    # print('密碼錯誤!請重新輸入,或輸入\'back\'返回上一級')
    print('密碼錯誤!返回主界面')
   elif flag == 'login':
    changePW(nowUser, input('請輸入新密碼:'))
    print('修改密碼成功!')
    continue
  elif choice == '2': # 選擇查詢余額
   showMoney(nowUser)
   continue
  elif choice == '3': # 選擇存錢
   saveMoney(nowUser, input('請輸入存入金額:'))
   continue
  elif choice == '4': # 選擇取錢
   drawMoney(nowUser, input('請輸入取出金額:'))
   continue
  elif choice == 'exit':
   main() # 返回主界面
  elif choice not in choices:
   print('錯誤操作,請重新輸入選項!')
   continue

8.定義main主函數(shù)

# 主界面
def main():
 # 定義錯誤次數(shù)
 errorTime = 0
 if errorTime >= 3: # 錯誤次數(shù)達三次退出系統(tǒng)后清零
  errorTime = 0
 while True:
  # crs登陸主界面
  print('=' * 10, '自動存取款機', '=' * 10)
  nowUser = ''
  # 用戶輸入卡號和密碼
  cardid = input('請輸入卡號:')
  password = input('請輸入密碼:')

  # 判斷卡號密碼是否存在正確
  # 卡號不存在
  flag = checkUser(cardid, password)

  if flag == 'noCardId':
   print('卡號不存在!請重新輸入')
   continue

  # 密碼錯誤
  elif flag == 'errorPW':
   errorTime += 1
   print('密碼錯誤!錯誤次數(shù)達三次將自動退出本系統(tǒng)!')
   print("錯誤次數(shù):", errorTime)
   if errorTime >= 3: # 錯誤次數(shù)達三次自動退出
    print('密碼輸錯三次,自動退出系統(tǒng)!')
    exit(0)
   continue

  # 卡號密碼正確進入系統(tǒng)
  else:
   nowUser = cardid
   userChoice(nowUser)

9.最后定義函數(shù)主入口,進行ATM系統(tǒng)的測試

if __name__ == '__main__':

 main()

收獲:

通過ATM案例 ,將之前學習的Python基礎重新進行了一次鞏固,梳理和融會貫通,個人感覺 Python的函數(shù)和返回值是個特別神奇的東西,當然這個案例還有很大的改進空間,大家有什么好的建議也可以給我留言,我之后會慢慢進行改良噠!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python網(wǎng)絡編程之UDP通信實例(含服務器端、客戶端、UDP廣播例子)

    python網(wǎng)絡編程之UDP通信實例(含服務器端、客戶端、UDP廣播例子)

    UDP,用戶數(shù)據(jù)報傳輸協(xié)議,它位于TCP/IP協(xié)議的傳輸層,是一種無連接的協(xié)議,它發(fā)送的報文不能確定是否完整地到達了另外一端
    2014-04-04
  • python實現(xiàn)自動登錄

    python實現(xiàn)自動登錄

    這篇文章主要為大家詳細介紹了python實現(xiàn)自動登錄,填充網(wǎng)頁表單,從而自動登錄WEB門戶,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • django的model操作匯整詳解

    django的model操作匯整詳解

    這篇文章主要介紹了django的model操作匯整詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Python實現(xiàn)火柴人的設計與實現(xiàn)

    Python實現(xiàn)火柴人的設計與實現(xiàn)

    火柴人(Stick Figure)是一種極簡風格的圖形,通常由簡單的線段和圓圈組成,卻能生動地表達人物的姿態(tài)和動作,本文旨在介紹如何使用Python實現(xiàn)火柴人的設計與繪制,通過編程的方式,讓讀者了解火柴人背后的基本原理和實現(xiàn)方法,需要的朋友可以參考下
    2024-10-10
  • Python Geopy庫地理編碼和地理距離計算案例展示

    Python Geopy庫地理編碼和地理距離計算案例展示

    Geopy庫是Python處理地理數(shù)據(jù)的一個強大工具,能夠實現(xiàn)地理編碼、反向地理編碼和地理距離計算,本文詳細介紹了Geopy的安裝與配置、核心功能、基本和高級用法,并通過實際應用案例展示了其在地理編碼與數(shù)據(jù)可視化、距離計算和位置推薦系統(tǒng)中的應用,感興趣的朋友一起看看吧
    2025-03-03
  • Python 兩個列表的差集、并集和交集實現(xiàn)代碼

    Python 兩個列表的差集、并集和交集實現(xiàn)代碼

    這篇文章主要介紹了Python 兩個列表的差集、并集和交集實現(xiàn)代碼,需要的朋友可以參考下
    2016-09-09
  • python中實現(xiàn)詞云圖的示例

    python中實現(xiàn)詞云圖的示例

    這篇文章主要介紹了python中實現(xiàn)詞云圖的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • python中實現(xiàn)棧的三種方法

    python中實現(xiàn)棧的三種方法

    這篇文章主要介紹了python中實現(xiàn)棧的三種方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python如何實現(xiàn)動態(tài)數(shù)組

    Python如何實現(xiàn)動態(tài)數(shù)組

    這篇文章主要介紹了Python如何實現(xiàn)動態(tài)數(shù)組,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Python中的fileinput模塊的簡單實用示例

    Python中的fileinput模塊的簡單實用示例

    這篇文章主要介紹了Python中的fileinput模塊實用示例,文中的示例是使用其來便利硬盤分區(qū)下的文本文件并打印其中行的長度,需要的朋友可以參考下
    2015-07-07

最新評論

乐都县| 永和县| 陇川县| 郁南县| 拉萨市| 涪陵区| 湟源县| 泾源县| 平乡县| 临泉县| 克山县| 佛冈县| 洱源县| 垫江县| 兖州市| 元阳县| 绵竹市| 崇左市| 汉源县| 兴山县| 乃东县| 四川省| 西华县| 平舆县| 新宁县| 阿尔山市| 天津市| 简阳市| 灵宝市| 宁河县| 株洲市| 板桥市| 将乐县| 大港区| 分宜县| 中卫市| 湖口县| 全州县| 疏勒县| 尚义县| 龙川县|