![](/img/trans.png)
[英]Why am I receiving a TypeError for an object type int in python?
[英]Why am I receiving a type error for Python?
“編寫一個總找零金額為 integer 輸入的程序,使用最少的硬幣輸出找零,每行一種硬幣類型。硬幣類型是美元、四分之一、一角硬幣、鎳和便士。適當使用單數和復數硬幣名稱,例如 1 便士與 2 便士。您的程序必須定義並調用以下 function。function exact_change() 應返回 num_dollars、num_quarters、num_dimes、num_nickels 和 num_pennies。
“num_dollars, num_quarters, num_dimes, num_nickels, num_pennies = exact_change(input_val)” 這行給我帶來了麻煩,但它是作業中的必填行。
錯誤顯示:文件“main.py”,第 36 行,單位為 num_dollars、num_quarters、num_dimes、num_nickels、num_pennies = exact_change(input_val) TypeError: 'NoneType' object is not iterable
if __name__ == '__main__':
input_val = int(input())
num_dollars, num_quarters, num_dimes, num_nickels, num_pennies = exact_change(input_val)
num_dollars = input_val // 100
input_val %= 100
num_quarters = input_val // 25
input_val %= 25
num_dimes = input_val // 10
input_val %= 10
num_nickels = input_val // 5
input_val %= 5
num_pennies = input_val
if num_dollars >1:
print('%d dollars' % num_dollars)
elif num_dollars ==1:
print('%d dollar' % num_dollars)
if num_quarters > 1:
print('%d quarters' % num_quarters)
elif num_quarters ==1:
print('%d quarter' % num_quarters)
if num_dimes >1:
print('%d dimes' % num_dimes)
elif num_dimes ==1:
print('%d dime' % num_dimes)
if num_nickels >1:
print('%d nickels' % num_nickels)
elif num_nickels ==1:
print('%d nickel' % num_nickels)
if num_pennies >1:
print('%d pennies' % num_pennies)
elif num_pennies ==1:
print('%d penny' % num_pennies)
if input_val <= 0:
print('no change')
錯誤說:
文件“main.py”,第 36 行,單位為 num_dollars、num_quarters、num_dimes、num_nickels、num_pennies = exact_change(input_val) TypeError: 'NoneType' object is not iterable
我目前也在為 Python 編碼做 Zybooks。 為了通過所有程序的測試,這就是代碼的外觀。
#define exact change function
def exact_change(user_total):
num_dollars = user_total // 100 #convert to dollars
user_total %= 100 #get remainder after conversion
num_quarters = user_total // 25 #convert to quarters
user_total %= 25 #get remainder after conversion
num_dimes = user_total // 10 #convert to dimes
user_total %= 10 #get remainder after conversion
num_nickels = user_total // 5 #convert to nickels
user_total %= 5 #get remainder after conversion
num_pennies = user_total
return(num_dollars, num_quarters, num_dimes, num_nickels, num_pennies)
if __name__ == '__main__':
input_val = int(input()) #prompt user to input an integer
num_dollars, num_quarters, num_dimes, num_nickels, num_pennies = exact_change(input_val) #recall exact_change function
#define output statements to output number of exact_change variables:
#num_dollars, num_quarters, num_dimes, num_nickels, num_pennies
if input_val <=0: #if amount is zero
print('no change') #print output
else:
if num_dollars > 1: #if number of dollars is greater than one
print('%d dollars' % num_dollars) #print number of dollars
elif num_dollars == 1: # if number of dollars equal 1
print('%d dollar' % num_dollars) #print dollar in singular
if num_quarters > 1: #if number of quarters is greater than one
print('%d quarters' % num_quarters) #print number of quarters
elif num_quarters ==1: # if number of quarters equal 1
print('%d quarter' % num_quarters) #print quarter in singular
if num_dimes > 1: #if number of dimes is greater than one
print('%d dimes' % num_dimes) #print number of dimes
elif num_dimes == 1: # if number of dimes equal 1
print('%d dime' % num_dimes) #print dime in singular
if num_nickels > 1: #if number of nickels is greater than one
print('%d nickels' % num_nickels) #print number of nickels
elif num_nickels == 1: # if number of nickels equal 1
print('%d nickel' % num_nickels) #print nickel in singular
if num_pennies >1: #if number pennies is greater than one
print('%d pennies' % num_pennies) #print number of pennies
elif num_pennies ==1: # if number of pennies equal 1
print('%d penny' % num_pennies) #print penny in singular
它應該看起來像這樣
def main():
input_val = int(input('Enter change: '))
if input_val <= 0:
print('Some error message')
else:
#the rest of the code you provided
num_dollars = input_val // 100
input_val %= 100
num_quarters = input_val // 25
input_val %= 25
num_dimes = input_val // 10
input_val %= 10
num_nickels = input_val // 5
input_val %= 5
num_pennies = input_val
if num_dollars >1:
print('%d dollars' % num_dollars)
elif num_dollars ==1:
print('%d dollar' % num_dollars)
if num_quarters > 1:
print('%d quarters' % num_quarters)
elif num_quarters ==1:
print('%d quarter' % num_quarters)
if num_dimes >1:
print('%d dimes' % num_dimes)
elif num_dimes ==1:
print('%d dime' % num_dimes)
if num_nickels >1:
print('%d nickels' % num_nickels)
elif num_nickels ==1:
print('%d nickel' % num_nickels)
if num_pennies >1:
print('%d pennies' % num_pennies)
elif num_pennies ==1:
print('%d penny' % num_pennies)
main()
user_input = int(input())
if user_input > 0:
dollar = user_input // 100
user_input %= 100
quarter = user_input // 25
user_input %=25
dime = user_input //10
user_input %= 10
nickel = user_input // 5
user_input %= 5
penny = user_input
if dollar == 1:
print(dollar, "Dollar")
elif dollar > 1:
print(dollar, "Dollars")
if quarter == 1:
print(quarter, "Quarter")
elif quarter > 1:
print(quarter, "Quarters")
if dime == 1:
print(dime, "Dime")
elif dime > 1:
print(dime, "Dimes")
if nickel == 1:
print(nickel, "Nickel")
elif nickel > 1:
print(nickel, "Nickels")
if penny == 1:
print(penny, "Penny")
elif penny > 1:
print(penny, "Pennies")
else:
print("No change")
#我用這個把頭發拉了一段時間。 上面的評論是正確的,但下面的評論更好一些,因為如果輸入負數,它會停止腳本。
import sys
amount_input = int(input())
dollars = amount_input // 100
quarters = amount_input % 100 // 25
dimes = amount_input % 100 % 25 // 10
nickels = amount_input % 100 % 25 % 10 // 5
pennies = amount_input % 100 % 25 % 10 % 5 // 1
if amount_input <= 0:
print("No change")
sys.exit()
if dollars > 1:
print(str(dollars) + " Dollars")
elif dollars == 1:
print(str(dollars) + " Dollar")
else:
pass
if quarters > 1:
print(str(quarters) + " Quarters")
elif quarters == 1:
print(str(quarters) + " Quarter")
else:
pass
if dimes > 1:
print(str(dimes) + " Dimes")
elif dimes == 1:
print(str(dimes) + " Dime")
else:
pass
if nickels > 1:
print(str(nickels) + " Nickels")
elif nickels == 1:
print(str(nickels) + " Nickel")
else:
pass
if pennies > 1:
print(str(pennies) + " Pennies")
elif pennies == 1:
print(str(pennies) + " Penny")
作為一個初級程序員,就我的 class 已經進入 zybooks 而言,我認為這是它通過測試的最佳途徑
total_change=int(input())
num_dollars=total_change//100
num_quarters=(total_change-num_dollars*100)//25
num_dimes=(total_change-num_dollars*100-num_quarters*25)//10
num_nickels=(total_change-num_dollars*100-num_quarters*25-num_dimes*10)//5
num_pennys=(total_change-num_dollars*100-num_quarters*25-num_dimes*10-num_nickels*5)//1
#no change
if total_change<=0:
print('No change')
#dollars
if 0<num_dollars<=1:
print(num_dollars,'Dollar')
if num_dollars>1:
print(num_dollars,'Dollars')
#quarters
if 0<num_quarters<=1:
print(num_quarters,'Quarter')
if num_quarters>1:
print(num_quarters,'Quarters')
#dimes
if 0<num_dimes<=1:
print(num_dimes,'Dime')
if num_dimes>1:
print(num_dimes,'Dimes')
#nickels
if 0<num_nickels<=1:
print(num_nickels,'Nickel')
if num_nickels>1:
print(num_nickels,'Nickels')
#pennys
if 0<num_pennys<=1:
print(num_pennys,'Penny')
if num_pennys>1:
print(num_pennys,'Pennys')
這是我使用 while 循環的解決方案。 . .
def exact_change(user_total):
dollar,quarter,dime,nickel,penny = 100,25,10,5,1
dollar_out, quarter_out, dime_out,nickel_out, penny_out = 0,0,0,0,0
while user_total > 0:
if user_total >= dollar:
dollar_out = dollar_out + 1
user_total = user_total - dollar
elif user_total >= quarter:
quarter_out = quarter_out + 1
user_total = user_total - quarter
elif user_total >= dime:
dime_out = dime_out + 1
user_total = user_total - dime
elif user_total >= nickel:
nickel_out = nickel_out + 1
user_total = user_total - nickel
else:
penny_out = user_total
user_total = 0
return {"dollars" if (dollar_out > 1) else "dollar": dollar_out,
"quarters" if (quarter_out > 1) else "quarter": quarter_out,
"dimes" if (dime_out > 1) else "dime": dime_out,
"nickels" if (nickel_out > 1) else "nickel": nickel_out,
"pennies" if (penny_out > 1) else "penny": penny_out,}
if __name__=="__main__":
input_val = int(input())
if input_val == 0:
print("no change")
else:
res = exact_change(input_val)
for key, value in res.items():
if value > 0:
print(value, key)
這個問題我花了很長時間才解決。 在這里查看其他人的代碼后,我的看起來最短。 我希望我能夠幫助那里的人。
def exact_change(user_total):
num_dollars = int(user_total // 100)
num_quarters = int((user_total - (num_dollars * 100)) // 25)
num_dimes = int(((user_total - (num_dollars * 100)) - (num_quarters * 25)) // 10)
num_nickels = int(((user_total - (num_dollars * 100)) - (num_quarters * 25) - (num_dimes * 10)) // 5)
num_pennies = int(((user_total - (num_dollars * 100)) - (num_quarters * 25) - (num_dimes * 10) -(num_nickels * 5)))
return num_dollars, num_quarters, num_dimes, num_nickels, num_pennies
if __name__ == '__main__':
input_val = int(input())
num_dollars, num_quarters, num_dimes, num_nickels, num_pennies = exact_change(input_val)
# Type your code here.
total = {'dollars':num_dollars, 'quarters': num_quarters, 'dimes': num_dimes, 'nickels': num_nickels, 'pennies': num_pennies}
change = total
if input_val == 0:
print('no change')
for x in change:
if change[x] == 0:
pass
if change[x] == 1:
print('{} {}'.format(change[x], x.replace('s','').replace('pennie', 'penny')))
if change[x] > 1:
print('{} {}'.format(change[x], x))
我所做的是:
change = int(input())
Dollar = [100, "dollar", "dollars"]
Quarter = [25, "quarter", "quarters"]
Dime = [10, "dime", "dimes"]
Nickel = [5, "nickel", "nickels"]
Penny = [1, "penny", "pennies"]
if change == 0:
print("no change")
else:
def change_count(user_total,currency_type):
num_num = int(user_total/currency_type[0])
if num_num == 1:
print(num_num, currency_type[1])
elif num_num > 1:
print(num_num, currency_type[2])
global change
change = change - (num_num * currency_type[0])
return change
change_count(change, Dollar)
change_count(change, Quarter)
change_count(change, Dime)
change_count(change, Nickel)
change_count(change, Penny)
您正在嘗試解壓縮 function,但 function 不存在(根據您在此處粘貼的內容)。 這是沒有功能的代碼。 如果你想用函數編寫這個實驗室,你可以通過 arguments 並在 function 中提供一個參數來完成這個
input_val = int(input())
if input_val <= 0:
print('No change')
num_dollars = input_val // 100
input_val %= 100
num_quarters = input_val // 25
input_val %= 25
num_dimes = input_val // 10
input_val %= 10
num_nickels = input_val // 5
input_val %= 5
num_pennies = input_val
if num_dollars >1:
print('%d Dollars' % num_dollars)
elif num_dollars ==1:
print('%d Dollar' % num_dollars)
if num_quarters > 1:
print('%d Quarters' % num_quarters)
elif num_quarters ==1:
print('%d Quarter' % num_quarters)
if num_dimes >1:
print('%d Dimes' % num_dimes)
elif num_dimes ==1:
print('%d Dime' % num_dimes)
if num_nickels >1:
print('%d Nickels' % num_nickels)
elif num_nickels ==1:
print('%d Nickel' % num_nickels)
if num_pennies >1:
print('%d Pennies' % num_pennies)
elif num_pennies ==1:
print('%d Penny' % num_pennies)
雖然代碼有點長,但我建議使用適當的空格。 它看起來更干凈,您可能會更容易發現代碼中的錯誤。 祝你好運!
這是 WITH 函數的代碼。 通常,如果可能,您希望減少 main 中的代碼量。 函數通常會導致更多的代碼行,但從長遠來看,代碼將更具適應性和可讀性:)
def exact_change(user_total):
if user_total <= 0:
print('no change')
num_dollars = user_total // 100
user_total -= (num_dollars * 100)
if num_dollars == 1:
print(num_dollars , 'dollar')
elif num_dollars > 1:
print(num_dollars , 'dollars')
num_quarters = user_total // 25
user_total -= (num_quarters * 25)
if num_quarters == 1:
print(num_quarters , 'quarter')
elif num_quarters > 1:
print(num_quarters , 'quarters')
num_dimes = user_total // 10
user_total = user_total - (num_dimes * 10)
if num_dimes == 1:
print(num_dimes , 'dime')
elif num_dimes > 1:
print(num_dimes , 'dimes')
num_nickels = user_total // 5
user_total = user_total - (num_nickels * 5)
if num_nickels == 1:
print(num_nickels , 'nickel')
elif num_nickels > 1:
print(num_nickels , 'nickels')
num_pennies = user_total // 1
if num_pennies == 1:
print(num_pennies , 'penny')
elif num_pennies > 1:
print(num_pennies , 'pennies')
return (num_dollars , num_quarters , num_dimes , num_nickels , num_pennies)
if __name__ == '__main__':
dollars, quarters, dimes, nickels, pennies = exact_change(int(input()))
input_change = int(input())
if input_change == 0:
print('No change')
dollars = input_change // 100
input_change -= dollars * 100
if dollars: print(dollars, 'Dollars' if dollars > 1 else 'Dollar')
quarters = input_change // 25
input_change -= quarters * 25
if quarters: print(quarters, 'Quarters' if quarters > 1 else 'Quarter')
dimes = input_change // 10
input_change -= dimes * 10
if dimes: print(dimes, 'Dimes' if dimes > 1 else 'Dime')
nickels = input_change // 5
input_change -= nickels * 5
if nickels: print(nickels, 'Nickels' if nickels > 1 else 'Nickel')
pennies = input_change
if pennies: print(pennies, 'Pennies' if pennies > 1 else 'Penny')
def exact_change(user_total):
num_dollars = user_total // 100
user_total %= 100
num_quarters = user_total // 25
user_total %= 25
num_dimes = user_total // 10
user_total %= 10
num_nickels = user_total // 5
user_total %= 5
num_pennies = user_total
return(num_dollars, num_quarters, num_dimes, num_nickels, num_pennies)
if __name__ == '__main__':
input_val = int(input())
num_dollars, num_quarters, num_dimes, num_nickels, num_pennies =
exact_change(input_val) #recall exact_change function
if input_val <=0:
print('No change')
else:
if num_dollars > 1:
print('%d Dollars' % num_dollars)
elif num_dollars == 1:
print('%d Dollar' % num_dollars)
if num_quarters > 1:
print('%d Quarters' % num_quarters)
elif num_quarters ==1:
print('%d Quarter' % num_quarters)
if num_dimes > 1:
print('%d Dimes' % num_dimes)
elif num_dimes == 1:
print('%d Dime' % num_dimes)
if num_nickels > 1:
print('%d Nickels' % num_nickels)
elif num_nickels == 1:
print('%d Nickel' % num_nickels)
if num_pennies >1:
print('%d Pennies' % num_pennies)
elif num_pennies ==1:
print('%d Penny' % num_pennies)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.