2014-09-12 5 views
-1

Я новичок в python. Я продолжаю получать ошибку, указанную ниже. Может кто-то пролить свет на проблему, которую я испытываю? БлагодаряВычислить объем и площадь поверхности сферической простой ошибки

объем = 4.0/3.0 * math.pi * (радиус * радиус * радиус)

TypeError: не может умножать последовательность, не-междунар типа 'ул'

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))) 

ответ

0

input возвращает строку. Вы не можете умножить две строки вместе.

Если вы хотите, чтобы преобразовать его в междунар или поплавок (или любого другого типа), сделать это следующим образом:

radius = float(radius) 

Вы, возможно, были сбиты с толку, глядя на пример кода из Python 2.x, где input, называемый eval() для строки, вы получите float или int или список или вызовите os.system ('rm -rf /') или все, что пользователь вводит. Это было запутанно и опасно, поэтому они зафиксировали его в 3.0, так что теперь вы получаете только строку, и решать вам, что с ней делать.

+0

Да я скачал новейший питон 3.4.1 и примеры, которые я искал на 2.x.x был так, что не очень полезно. Но да, то, что я сделал, было конвертировать --- radius = float (radius), и я получил работу. Спасибо за быстрые ответы! – user2981423

+0

@ user2981423: Если вы собираетесь смотреть на много кода 2.x (и этого может быть трудно избежать), вы можете захотеть снять и, возможно, пометить закладку [Что нового в Python 3.0] (https: //docs.python.org/3/whatsnew/3.0.html). Помимо больших ошибок, которые вы быстро узнаете ('print' как функция, Unicode везде), есть куча маленьких. (Тем не менее, некоторые из этих изменений с тех пор были отменены - например, 'callable' существует снова,' u' префиксы на строковых литералах игнорируются вместо ошибок и т. Д.) – abarnert

0

Вам необходимо преобразовать радиус строки в поплавок или двойной. Попробуйте это:

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))) 
Смежные вопросы