【发布时间】:2021-04-17 03:46:49
【问题描述】:
我正在尝试创建一个计算器程序,该程序接受用户输入并将其存储在列表中并根据他们的选择执行计算。但是,我一直遇到第 31 行的错误提示
TypeError: 'float' object cannot be interpreted as an integer.
代码如下:
import math
def printIntro():
print("This is a simple calculator.")
print("Select an operation:\n1) Add\n2) Subtract\n3) Divide\n4) Multiply")
while True:
operator = input("Enter your choice of + - / *: \n")
if operator in('+', '-', '/', '*'):
#continue asking for numbers until user ends
#store numbers in an array
list = []
num = float(input("What are your numbers?: "))
for n in range(num):
numbers = float(input("What are your numbers?: "))
list.append(numbers)
if n == '':
break
if operator == '+':
print(add(list))
if operator == '-':
print(subtract(list))
if operator == '/':
print(divide(list))
if operator == '*':
print(multiply(list))
else:
break
【问题讨论】:
-
迭代器必须是整数类型,因此此行失败
for n in range(num):,因为您将num显式转换为浮点数。请改用int()。 -
我注意到您的代码存在许多问题。下面提到了其中一些,所以我将通过快速阅读添加一个关注点。您的提示令人困惑。当你问“你的号码是多少?”触发对多个号码的请求。这些逗号是分开的吗?空间分隔?无论如何,
float()都不起作用。您不能采用本身就是多个值的字符串的浮点数。您需要先将其解析为单独的元素。例如,trtfloat("5, 10") -
您是否关注特定的tutorial、书籍等?注意 indents(第 5 行的
print)并在保持循环短时使代码阅读/调试更容易,例如提取循环体到一个函数中。
标签: python