![](/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.