Как исправить ошибку TypeError: 'str' object is not callable?
def check():
global input, height1, weight, height1, weight1
print("1.Мальчик")
print("2.Девочка")
input = str(input("Введите Ваш пол по цифре сверху: "))
if input == "1":
height = str(input("Введите Ваш рост(в сантиметрах): "))
weight = str(input("Введите Ваш вес: "))
elif input == "2":
height1 = str(input("Введите Ваш рост(в сантиметрах): "))
weight1 = str(input("Введите Ваш вес: "))
else:
print("Введите одну из цифр выше!")
check()
Перед тем как задать этот вопрос, естественно, я прочитал другие вопросы связанные с этим исключением. У многих ошибка заключалась в лишних, не нужных скобках, а вот у меня - я не знаю.
Я много раз перечитывал свой код в поисках этих лишних скобок, но я их так и не нашёл.
Может ошибка заключается в другом?
Ответы (3 шт):
В этой строке вы переписываете имя input и теперь в ней будет строка, которую введет пользователь, а не функция input:
input = str(input("Введите Ваш пол по цифре сверху: "))
Поэтому, при последующем вызове input, например в height = str(input("Введите Ваш рост(в сантиметрах): ")) будет та ошибка
Решение. Назовите по другому переменную для input
UPD.
Исправил код из вопроса:
def check():
global sex, height1, weight1, height2, weight2
print("1.Мальчик")
print("2.Девочка")
sex = input("Введите Ваш пол по цифре сверху: ")
if sex == "1":
height1 = input("Введите Ваш рост(в сантиметрах): ")
weight1 = input("Введите Ваш вес: ")
elif sex == "2":
height2 = input("Введите Ваш рост(в сантиметрах): ")
weight2 = input("Введите Ваш вес: ")
else:
print("Введите одну из цифр выше!")
sex, height1, weight1, height2, weight2 = ' ' * 5
check()
print(sex, height1, weight1, height2, weight2)
def check():
global height, weight, height1, weight1
print("1.Мальчик")
print("2.Девочка")
sex = input("Введите Ваш пол по цифре сверху: ")
if sex == "1":
height = int(input("Введите Ваш рост(в сантиметрах): "))
weight = int(input("Введите Ваш вес: "))
elif sex == "2":
height1 = int(input("Введите Ваш рост(в сантиметрах): "))
weight1 = int(input("Введите Ваш вес: "))
else:
print("Введите одну из цифр выше!")
check()
input уже возвращает строку, преобразуйте ее в int, а не в str:
1.Мальчик
2.Девочка
Введите Ваш пол по цифре сверху: >? 1
Введите Ваш рост(в сантиметрах): >? 23
Введите Ваш вес: >? 21
Заменил переменную input на my_input, чтобы не было конфликта названий с родной функцией. (А также не конвертирую результат функции input в str, потому что input итак выдает str. Хотя это не вызывает ошибок.)
def check():
global my_input, height1, weight, height1, weight1
print("1.Мальчик")
print("2.Девочка")
my_input = input("Введите Ваш пол по цифре сверху: ")
if input == "1":
height = input("Введите Ваш рост(в сантиметрах): ")
weight = input("Введите Ваш вес: ")
elif input == "2":
height1 = input("Введите Ваш рост(в сантиметрах): ")
weight1 = input("Введите Ваш вес: ")
else:
print("Введите одну из цифр выше!")
check()