Как я могу заставить свою программу вычислять площадь треугольников? В Питоне

Пока это моя программа, может кто-нибудь сказать мне, что я сделал не так, или дать мне исправление? Это все на питоне, и я был бы очень признателен за ответ. Появляется сообщение об ошибке, в котором говорится: «Невозможно умножить последовательность на не-целое типа« str »».

height = input("What is the height of the triangle? ")
width = input("What is the width of the triangle? ")

area = width * height /2

print("The area of the triangle would be {0:f} ".format(area))

person BlizzardGizzard    schedule 10.09.2015    source источник
comment
Что вы подразумеваете под преобразованием в int?   -  person BlizzardGizzard    schedule 10.09.2015
comment
Преобразование его в float было бы еще лучше.   -  person Emil Vikström    schedule 10.09.2015


Ответы (3)


Вы должны преобразовать свои значения в тип данных float:

height = float(input("What is the height of the triangle? "))
width = float(input("What is the width of the triangle? "))

area = width * height /2

print("The area of the triangle would be {0:f} ".format(area))
person Emil Vikström    schedule 10.09.2015
comment
Спасибо за ответ Эмиль. :) - person BlizzardGizzard; 10.09.2015
comment
Кажется, это сработало сейчас, когда я попробовал это. Спасибо за помощь. - person BlizzardGizzard; 10.09.2015

Вы используете input для получения своего номера, но тип, возвращаемый из метода input, является строкой. Преобразуйте его в int, и он будет работать.

Пример:

area = int(width) * int(height) /2
person CIsForCookies    schedule 10.09.2015

На самом деле ввод, который вы используете, height = input("Какова высота треугольника?") просто не является целым числом, вот что вы можете исправить

height = eval(raw_input("What is the height of the triangle? "))
width = eval(raw_input("What is the width of the triangle?"))
area = width * height /2
print("The area of the triangle would be {0:f} ".format(area))
person Vidalia    schedule 10.09.2015
comment
raw_input было именем ввода в Python 2, а eval опасен (как ввод в Python 2). Учитывая спецификатор типа :f, соответствующими типами будут float или decimal.Decimal. - person Yann Vernier; 10.09.2015
comment
Это опасная практика. eval примет любой код Python. Это может хорошо работать в игрушечном примере, подобном этому, но обучение этому как общему решению может привести к легкому взлому кода, например, в веб-приложении. - person Emil Vikström; 10.09.2015
comment
Думаю, я не буду использовать это решение тогда? - person BlizzardGizzard; 10.09.2015