我想用Python做一個類似ATM的程式。我們的想法是,用戶輸入任何數額的錢,最小數額的鈔票(100、50、25、10、5)將被列印出來。
因此,舉例來說:
輸入: 258
預期輸出:"2張100美元的鈔票,1張50美元的鈔票,1張5美元的鈔票,3張1美元的鈔票"。
該程式對5的倍數的數字有效,但我似乎不能讓10美元和1美元的鈔票有同樣的表現。以下是代碼:
print("Hi! Welcome to Python Bank.
你想取多少錢?")
amnt = int(input("請輸入金額:")
if amnt >= 100:
if amnt // 100 >= 2:
print(amnt // 100, "$100 Bills")
else:
print("1 $100鈔票")
if (amnt // 50) % 2 != 0:
print("1 $50 Bill")
if (amnt // 25) % 2 !=0:
print("1 $25 Bill"/span>)
if (amnt // 10) % 2 !=0:
print(amnt // 10, "$10 Bills")
if (amnt // 5) % 2 ! = 0 and (amnt // 25) % 2 == 0:
print("1 $Bill")
if (amnt // 1) % 2 != 1:
print((amnt // 1), "$1 Bills")
我使用(//)運算子,因為它告訴你右邊的數字在左邊的數字中占多少。然后用(%)運算子與(!=0)。這似乎對100、50、25起作用,但對10和1不起作用。 我怎樣才能解決這個問題呢?
uj5u.com熱心網友回復:
你的邏輯是錯誤的。這是正確的方法。
if amount >= 100:
print( amount // 100, '100$ notes')
amount = amount % 100
if amount >= 50:
print('1 50$ notes'/span>)
amount = amount % 50
以此類推
uj5u.com熱心網友回復:
一個更簡潔的解決方案是使用一個函式來為你做這件事,以備你決定改變硬幣的價值。
print("Hi! Welcome to Python Bank.
你想取多少錢?")
amnt = int(input("請輸入金額:")
def solve(m)。
bills = [100, 50, 25, 10, 5, 1]
dic = {}
for bill in bills:
if m >= bill:
dic[bill] = m // bill
m -= dic[bill] * bill
return dic
def disp(dic)。
s = ', '.join([ "{} ${} bills". format(dic[bill], bill) for bill in dic] )
print(s)
disp(solve(amnt))
uj5u.com熱心網友回復:
假設你有Python3,你可以使用f-strings,而且你總是可以使用一個回圈來處理這樣的事情。這樣一來,每張鈔票大小的邏輯都是一致的:
def print_change(amnt, bill_sizes=(100, 50, 25, 10, 5, 1))。)
# loop over bill sizes.
for bill_size in bill_sizes:
# skip if there isn't enough left for this bill.
if amnt >= bill_size:
# remove n number of bills from amnt
n = amnt // bill_size
amnt -= n * bill_size
# print the results, with an 's' if there are more than one
print(f'{n} ${bill_size} Bill' ('s if n > 1 else ''/span>)
print("Hi! Welcome to Python Bank.
你想取多少錢?")
print_change(int(input("請輸入金額:"))
uj5u.com熱心網友回復:
我只是簡單地添加了一個elif來檢查他們是否輸入了1,它似乎做了我認為你想要的事情。
print("Hi! Welcome to Python Bank.
你想取多少錢?")
amnt = int(input("請輸入金額:")
if amnt >= 100:
if amnt // 100 >= 2:
print(amnt // 100, "$100 Bills")
else:
print("1 $100鈔票")
if (amnt // 50) % 2 != 0:
print("1 $50 Bill")
if (amnt // 25) % 2 !=0:
print("1 $25 Bill"/span>)
if (amnt // 10) % 2 !=0:
print(amnt // 10, "$10 Bills")
if (amnt // 5) % 2 ! = 0 and (amnt // 25) % 2 == 0:
print("1 $Bill")
if (amnt // 1) % 2 != 1:
print((amnt // 1), "$1 Bills")
elif amnt == 1:
print((amnt // 1), "$1 Bills")
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/331092.html
標籤:
下一篇:尋找完美直角三角形的另外兩點
