【问题标题】:Python Calculator with lists and loops [duplicate]带有列表和循环的Python计算器[重复]
【发布时间】: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


【解决方案1】:

Python 的range 方法接受一个整数

错误是由于您在将输入转换为num = float(..) 中的浮点数,然后再将其提供给range(num)

我认为在您尝试从输入中获取数字的行中会导致它:

num = float(input("What are your numbers?: "))

它应该可以使用(我还修复了提示消息):

num = int(input("How many numbers you have?: "))

【讨论】:

    【解决方案2】:

    for n in range(int(num)):在 for 循环中将 num 转换为 int,例如 this。上面有类似的注释,但这里是固定代码。

    【讨论】:

      猜你喜欢
      • 2018-06-29
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      相关资源
      最近更新 更多