首頁 > 軟體

Python實現ATM簡單功能的範例詳解

2022-12-01 14:02:40

一.區域性變數、全域性變數

1.什麼是區域性變數

作用範圍在函數內部,在函數外部無法使用

2.什麼是全域性變數

在函數內部和外部均可使用

3.如何將函數內定義的變數宣告為全域性變數

使用global關鍵字,global變數

二.global關鍵字

思考:

num=100

def testsA()
   print(num)
   
   
def testB()
   num=200
   print(num)
   
testA()                          #結果:100
testB()                          #結果:200
print(f'全域性變數num={num}')      #結果:全域性變數num=100

testB函數需要修改變數num的值為200,如何修改程式?

這時我們就需要把區域性變數轉變為全域性變數,利用global關鍵字

演示

num = 200
def A():
    print(f"A:{num}")
def B():
    global num
    num = 500
    print(f"B:{num}")
 
A()
B()
print(num)

結果是

三.編寫ATM程式

要求

定義一個全域性變數: money,用來記錄銀行卡餘額(預設5000000)

定義一個全域性變數: name,用來記錄客戶姓名(啟動程式時輸入)

定義如下的函數:

  • 查詢餘額函數
  • 存款函數
  • 取款函數
  • 主選單函數

程式啟動後要求輸入客戶姓名

查詢餘額、存款,取款後都會返回主選單

存款、取款後,都應顯示一下當前餘額

客戶選擇退出或輸入錯誤,程式會退出,否則一直執行

詳細步驟

1.定義全域性變數,輸入姓名

#定義全域性變數
money = 500000
name = None
 
 
#輸入姓名
name = input("請輸入您的姓名:")

2.定義查詢函數

#定義查詢函數
def query(show_header):
    if show_header:
        print("------------查詢餘額--------------")
    print(f"{name},您好,您所剩餘額為{money}")

3.定義存款函數

#定義存款
def saving(num):
    global money
    money+=num
    print("------------存款--------------")
    print(f"{name},您好,您存入{money}成功")
 
    query()

4.定義取款函數

#定義取款
def get_money(num):
    global money
    money -= num
    print("------------取款--------------")
    print(f"{name},您好,您取出{num}成功")
 
    query()

5.定義主選單

#定義主選單
def main():
    print("------------主選單--------------")
    print(f"{name}您好,歡迎來到ATM,請選擇操作")
    print("查詢餘額:輸入1")
    print("存款:   輸入2")
    print("取款:   輸入3")
    print("退出:   輸入4")
    return input("請輸入您的選擇:")

6.設定迴圈,確保持續中途不退出

#設定迴圈確保程式中不退出
while True:
    keyboard_input = main()
    if keyboard_input=="1":
        query(True)
        continue
    elif keyboard_input=="2":
        num =int(input("您想存入多少錢:"))
        saving(num)
        continue
    elif keyboard_input=="3":
        num = int(input("您想取出多少錢:"))
        get_money(num)
        continue
    else:
        print("程式退出了!")
        break

執行結果

存在問題

但我們進行存款或者取款的時候,會呼叫查詢餘額函數,在查詢餘額函數中會輸出這個:

但是,我只想這一print只在單獨呼叫查詢餘額函數時才出現,為實現這一目標那就需要就一個if判斷語句

改進

這樣執行結果就是

完整程式碼

money = 500000
name = None
 
 
#輸入姓名
name = input("請輸入您的姓名:")
 
#定義查詢函數
def query(show_header):
    if show_header:
        print("------------查詢餘額--------------")
    print(f"{name},您好,您所剩餘額為{money}")
 
#定義存款
def saving(num):
    global money
    money+=num
    print("------------存款--------------")
    print(f"{name},您好,您存入{money}成功")
 
    query(False)
 
#定義取款
def get_money(num):
    global money
    money -= num
    print("------------取款--------------")
    print(f"{name},您好,您取出{num}成功")
 
    query(False)
 
#定義主選單
def main():
    print("------------主選單--------------")
    print(f"{name}您好,歡迎來到ATM,請選擇操作")
    print("查詢餘額:輸入1")
    print("存款:   輸入2")
    print("取款:   輸入3")
    print("退出:   輸入4")
    return input("請輸入您的選擇:")
#設定迴圈確保程式中不退出
while True:
    keyboard_input = main()
    if keyboard_input=="1":
        query(True)
        continue
    elif keyboard_input=="2":
        num =int(input("您想存入多少錢:"))
        saving(num)
        continue
    elif keyboard_input=="3":
        num = int(input("您想取出多少錢:"))
        get_money(num)
        continue
    else:
        print("程式退出了!")
        break

到此這篇關於Python實現ATM簡單功能的範例詳解的文章就介紹到這了,更多相關Python ATM功能內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com