def main():
pennies = get_input("Enter pennies : ")
nickels = get_input("Enter nickels: ")
dimes = get_input("Enter dimes: ")
quarters = get_input("Enter quarters: ")
print("You Entered : ")
print("\tPennies : " , pennies)
print("\tNickels :" , nickels)
print("\tDimes :" , dimes)
print("\tQuarters:" , quarters)
total_value = get_total(pennies, nickels, dimes, quarters)
dollars = get_dollars(pennies, nickels, dimes, quarters)
left_over_cents = get_left_over_cents(pennies, nickels, dimes, quarters)
print("Total = $",total_value, sep="")
print("You Have", dollars, "dollars and", left_over_cents, "cent(s)")
我一直收到错误,指出TypeError:*支持的操作数类型*:' float'和' NoneType。我在这个网站上浏览了与此错误相关的答案,但没有找到任何可以帮助我的内容。用户输入四个数字后,程序在尝试执行下一部分代码后给出错误。
def get_input(message):
get_input = int(input(message))
while get_input <= 0:
print("Error")
return get_input
在这部分。如果用户输入数字0或更低,则while循环应该返回到函数,但它只是写下0。我很抱歉这些可能是非常简单的解决方案,但我在我的介绍课程中,这对我来说相当困难。
def get_total(pennies, nickels, dimes, quarters):
pennies = (.01 * pennies);
nickels = .05 * nickels;
dimes = .10 * dimes;
quarters = .25 * quarters;
total_value = pennies + nickels + dimes + quarters
return total_value
def get_dollars(pennies, nickels, dimes, quarters):
total_value = get_total(pennies, nickels, dimes, quarters)
dollars = format(total_value // 1, ".0f")
return dollars
def get_left_over_cents(pennies, nickels, dimes, quarters):
total_value = get_dollars(pennies, nickels, dimes, quarters)
left_over_cents = total_value
return left_over_cents
main()
答案 0 :(得分:1)
首先,我认为您的输入功能是错误的:
def get_input(message):
get_input = int(input(message))
while get_input <= 0 :
print("Error")
return get_input
不应该这样:
def get_input(message):
get_input = int(input(message))
while get_input <= 0:
print("Error")
get_input = int(input(message))
return get_input
大多数(强大的)编译器甚至不会编译它,因为它们会将程序转换为跟踪,并注意到程序有可能返回而没有给出任何值。
由于Python是弱类型的,所以这不是问题:如果没有提供return语句,它只返回任何内容,但结束方法。
因此,当您输入有效数据时,您的方法不会返回任何内容,因此无法处理结果。
这是强类型语言优于Python之类的弱类型语言的优势之一,尽管我承认还有其他参数支持Python而不是Java。
答案 1 :(得分:1)
您的问题出在get_input
函数中:
def get_input(message):
get_input = int(input(message))
while get_input <= 0:
print("Error")
return get_input
如果您输入的内容小于或等于0,则只返回一个值,显然不是所需的输入。相反,您应该移动while
语句的返回外部,或者考虑改进它,以便只有在输入大于0时它才会返回:
def get_input(message):
get_input = -1
while get_input <= 0:
print("Enter a number greater than 0")
get_input = int(input(message))
return get_input
这样:
>>> var = get_input('Enter: ')
Enter a number greater than 0
Enter: -4
Enter a number greater than 0
Enter: 0
Enter a number greater than 0
Enter: 5
>>> var
5
>>>
之前,您没有返回任何内容,因此您的便士价值存储为None
。 Python试图乘以pennies
,None
,因此您的错误:
>>> def get_input(message):
... get_input = int(input(message))
... while get_input <= 0:
... print("Error")
... return get_input
...
>>> pennies = get_input('Enter: ')
Enter: 9
>>> print(0.1*pennies)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for *: 'float' and 'NoneType'