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

Python ATM功能實現(xiàn)代碼實例

 更新時間:2020年03月19日 13:53:33   作者:西樓xilou  
這篇文章主要介紹了Python ATM功能實現(xiàn)代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

編寫ATM程序?qū)崿F(xiàn)下述功能,數(shù)據(jù)來源于文件db.txt

1、充值功能:用戶輸入充值錢數(shù),db.txt中該賬號錢數(shù)完成修改

2、轉(zhuǎn)賬功能:用戶A向用戶B轉(zhuǎn)賬1000元,db.txt中完成用戶A賬號減錢,用戶B賬號加錢

3、提現(xiàn)功能:用戶輸入提現(xiàn)金額,db.txt中該賬號錢數(shù)減少

4、查詢余額功能:輸入賬號查詢余額

登錄功能

用戶登錄成功后,內(nèi)存中記錄下該狀態(tài),上述功能以當(dāng)前登錄狀態(tài)為準(zhǔn),必須先登錄才能操作

代碼如下

import os

user_staus = {'username': None}


def ad_credit(username, amount):
  """
  充值功能
  :param username:
  :param amount:
  :return:
  """
  if user_staus['username'] is None:
    login()
  with open('db.txt', 'rt', encoding='utf-8')as f1, \
      open('db.txt.swap', 'wt', encoding='utf-8')as f2:
    while True:
      cont = f1.readline()
      if len(cont) == 0:
        break
      name, remain = cont.strip().split(':')
      if username in name:
        remain = int(remain) + int(amount)
        f2.write('{}:{}\n'.format(name, remain))
        print('充值成功,{}的余額為{}'.format(username, remain))
      else:
        f2.write(cont)
  os.remove('db.txt')
  os.rename('db.txt.swap', 'db.txt')


def transfer(user_out, user_in, amount):
  '''3
  轉(zhuǎn)賬功能
  :param user_out:
  :param user_in:
  :param amount:
  :return:
  '''
  if user_staus['username'] is None:
    login()
  with open('db.txt', 'rt', encoding='utf-8')as f1, \
      open('db.txt.swap', 'wt', encoding='utf-8')as f2:

    userinfo = {}
    for line in f1:
      name, remind = line.strip().split(':')
      userinfo[name] = int(remind)
    if user_out not in userinfo:
      print('用戶不存在')
      return
    if user_in not in userinfo:
      print('收款方不存在')
      return
    if user_out in userinfo and user_in in userinfo:
      if userinfo[user_out] >= int(amount):
        userinfo[user_out] -= int(amount)
        userinfo[user_in] += int(amount)
        print('轉(zhuǎn)賬成功,已成功從{}向{}匯款{}'.format(user_out, user_in, amount))
      elif userinfo[user_out] < amount:
        print('余額不足')
        return
    for name, remind in userinfo.items():
      f2.write('{}:{}\n'.format(name, remind))

  os.remove('db.txt')
  os.rename('db.txt.swap', 'db.txt')


def cashon(username, amount):
  '''
  提現(xiàn)功能
  :param username:
  :param amount:
  :return:
  '''
  if user_staus['username'] is None:
    login()
  with open('db.txt', 'rt', encoding='utf-8')as f1, \
      open('db.txt.swap', 'wt', encoding='utf-8')as f2:
    userinfo = {}
    for line in f1:
      name, remind = line.strip().split(':')
      userinfo[name] = int(remind)
    if username not in userinfo:
      print('用戶不存在')
      return
    if username in userinfo and userinfo[username] >= int(amount):
      userinfo[username] -= int(amount)
      print('已從余額中取出{},現(xiàn)余額為{}'.format(amount, userinfo[username]))
    elif userinfo[username] < amount:
      print('余額不足,提現(xiàn)失敗')
      return
    for name, remind in userinfo.items():
      f2.write('{}:{}\n'.format(name, remind))
  os.remove('db.txt')
  os.rename('db.txt.swap', 'db.txt')


def check(username):
  '''
  余額查詢功能
  :param username:
  :return:
  '''
  if user_staus['username'] is None:
    login()
  with open('db.txt', 'rt', encoding='utf-8')as f:
    userinfo = {}
    for line in f:
      name, remind = line.strip().split(':')
      userinfo[name] = remind
    if username not in userinfo:
      print('用戶不存在')
      return
    if username in userinfo:
      print('當(dāng)前余額為:{}'.format(userinfo[username]))


def login():
  username = input('輸入用戶名')
  userpassword = input('輸入密碼')
  with open('login.txt', 'rt', encoding='utf-8')as login_f:
    login = {}
    for line in login_f:
      name, psd = line.strip().split(':')
      login[name] = psd
      if username in login:
        if login[username] == userpassword:
          print('登陸成功')
          user_staus['username'] = username
          break
      elif username not in login:
        print('用戶名不存在')
        return


def logout():
  user_staus['username'] = None
  print('已成功登出')
  return


login()
tag = True
while tag:
  cmd = input('''
  請輸入你想使用的功能序號
  1:充值
  2:轉(zhuǎn)賬
  3:提現(xiàn)
  4:查詢余額
  0:登出
  ''')
  if cmd == '1':
    username = input('輸入用戶名:')
    amount = input('輸入充值金額:')
    ad_credit(username, amount)
  elif cmd == '2':
    user_out = input('請輸入轉(zhuǎn)賬方:')
    user_in = input('請輸入接收方:')
    amount = input('輸入轉(zhuǎn)賬金額:')
    transfer(user_out, user_in, amount)
  elif cmd == '3':
    username = input('輸入用戶名:')
    amount = input('輸入提現(xiàn)金額')
    cashon(username, amount)
  elif cmd == '4':
    username = input('輸入用戶名:')
    check(username)
  elif cmd == '0':
    logout()
    tag = False
  else:
    print('請正確輸入序號')

以下是模擬結(jié)果

'''
/Users/chenfeng/PycharmProjects/ATM/venv/bin/python /Users/chenfeng/PycharmProjects/ATM/main.py
輸入用戶名xilou
輸入密碼666
登陸成功

請輸入你想使用的功能序號
1:充值
2:轉(zhuǎn)賬
3:提現(xiàn)
4:查詢余額
0:登出
1
輸入用戶名:xilou
輸入充值金額:200
充值成功,xilou的余額為700

請輸入你想使用的功能序號
1:充值
2:轉(zhuǎn)賬
3:提現(xiàn)
4:查詢余額
0:登出
2
請輸入轉(zhuǎn)賬方:xilou
請輸入接收方:heiren
輸入轉(zhuǎn)賬金額:200
轉(zhuǎn)賬成功,已成功從xilou向heiren匯款200

請輸入你想使用的功能序號
1:充值
2:轉(zhuǎn)賬
3:提現(xiàn)
4:查詢余額
0:登出
3
輸入用戶名:xilou
輸入提現(xiàn)金額100
已從余額中取出100,現(xiàn)余額為400

請輸入你想使用的功能序號
1:充值
2:轉(zhuǎn)賬
3:提現(xiàn)
4:查詢余額
0:登出
4
輸入用戶名:xilou
當(dāng)前余額為:400

請輸入你想使用的功能序號
1:充值
2:轉(zhuǎn)賬
3:提現(xiàn)
4:查詢余額
0:登出
0
已成功登出

Process finished with exit code 0

'''以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一行Python代碼過濾標(biāo)點符號等特殊字符

    一行Python代碼過濾標(biāo)點符號等特殊字符

    這篇文章主要介紹了一行Python代碼過濾標(biāo)點符號等特殊字符的相關(guān)知識,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • 最基礎(chǔ)的Python的socket編程入門教程

    最基礎(chǔ)的Python的socket編程入門教程

    這篇文章主要介紹了最基礎(chǔ)的Python的socket編程入門教程,包括最基本的發(fā)送和接受信息等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • 有趣的python小程序分享

    有趣的python小程序分享

    這篇文章主要介紹了有趣的python小程序分享,具有一定參考價值,需要的朋友可以了解下。
    2017-12-12
  • Django+Vue實現(xiàn)文件上傳下載的項目實踐

    Django+Vue實現(xiàn)文件上傳下載的項目實踐

    本文主要介紹了Django+Vue實現(xiàn)文件上傳下載的項目實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Python實現(xiàn)的棧、隊列、文件目錄遍歷操作示例

    Python實現(xiàn)的棧、隊列、文件目錄遍歷操作示例

    這篇文章主要介紹了Python實現(xiàn)的棧、隊列、文件目錄遍歷操作,結(jié)合實例形式分析了Python數(shù)據(jù)結(jié)構(gòu)中棧與隊列的定義、使用,以及文件目錄的遍歷相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • pandas實現(xiàn)選取特定索引的行

    pandas實現(xiàn)選取特定索引的行

    下面小編就為大家分享一篇pandas實現(xiàn)選取特定索引的行,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python自定義線程類簡單示例

    Python自定義線程類簡單示例

    這篇文章主要介紹了Python自定義線程類,結(jié)合簡單實例形式分析Python線程的定義與調(diào)用相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • python3正則提取字符串里的中文實例

    python3正則提取字符串里的中文實例

    今天小編就為大家分享一篇python3正則提取字符串里的中文實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 使用npy轉(zhuǎn)image圖像并保存的實例

    使用npy轉(zhuǎn)image圖像并保存的實例

    這篇文章主要介紹了使用npy轉(zhuǎn)image圖像并保存的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python爬蟲之Selenium中frame/iframe表單嵌套頁面

    Python爬蟲之Selenium中frame/iframe表單嵌套頁面

    這篇文章主要介紹了Python爬蟲之Selenium中frame/iframe表單嵌套頁面,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論

遵化市| 焦作市| 东丰县| 汉川市| 江津市| 高清| 哈密市| 祁连县| 师宗县| 松潘县| 开江县| 台江县| 景东| 吴旗县| 邵东县| 沂源县| 绍兴县| 呼图壁县| 广西| 福泉市| 华容县| 泽州县| 璧山县| 宁德市| 花莲市| 巴中市| 河南省| 阿合奇县| 萨迦县| 泰和县| 明水县| 托里县| 绩溪县| 柯坪县| 苏州市| 乐至县| 游戏| 阳谷县| 凤冈县| 高雄市| 喀喇沁旗|