【问题标题】:Calculate the output of volume and surface area of a sphere simple error [duplicate]计算球体简单误差的体积和表面积的输出[重复]
【发布时间】:2015-03-08 02:03:00
【问题描述】:

我是 python 新手。我不断收到下面列出的错误。有人可以阐明我遇到的问题吗?谢谢

体积 = 4.0/3.0 * math.pi * (radius*radius*radius)

TypeError: 不能将序列乘以“str”类型的非整数

import math

radius = input("Enter Radius: ")
print("Radius: " + str(radius))

volume = 4.0/3.0 * math.pi * (radius*radius*radius)
print("Volume: " + str(round(volume,2)))

surface = 4.0 * math.pi * (radius*radius)
print("Surface Area: " + str(round(surface,2)))

【问题讨论】:

    标签: python geometry volume


    【解决方案1】:

    您需要将字符串半径转换为浮点数或双精度数。 试试这个:

    import math
    
    radius = input("Enter Radius: ")
    print("Radius: " + str(radius))
    
    r = float(radius)
    
    volume = 4.0/3.0 * math.pi * (r*r*r)
    print("Volume: " + str(round(volume,2)))
    
    surface = 4.0 * math.pi * (r*r)
    print("Surface Area: " + str(round(surface,2)))
    

    【讨论】:

      【解决方案2】:

      input 返回一个字符串。不能将两个字符串相乘。

      如果要将其转换为 int 或 float(或任何其他类型),请这样做:

      radius = float(radius)
      

      查看 Python 2.x 中的示例代码可能会让您感到困惑,其中输入为您在字符串上调用了 eval(),因此您得到了 float 或 int 或 list 或调用 os.system('rm - rf /') 或用户输入的任何内容。这是令人困惑和危险的,所以他们在 3.0 中修复了它,所以现在你只得到字符串,由你决定如何处理它。

      【讨论】:

      • 是的,我下载了最新的 python 3.4.1,我正在查看的示例是 2.x.x,所以这不是很有帮助。但是,是的,我所做的是转换 --- radius = float(radius),我让它工作正常。感谢您的快速回复!
      • @user2981423:如果您要查看大量 2.x 代码(而且很难避免),您可能需要浏览一下,或者添加书签,What's New in Python 3.0 .除了你会很快学会的大问题(print 作为一个函数,Unicode 无处不在),还有很多小问题。 (但是,其中一些更改已被撤消 - 例如,callable 再次存在,字符串文字上的 u 前缀被忽略而不是错误等)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 2018-02-19
      相关资源
      最近更新 更多