2015-12-11 2 views
0

, поэтому я только что начал Python сегодня. Пробовал основную программу, но я получаю сообщение об ошибке «не может преобразовать Int объект ул неявно»Ошибка в базовом коде python

userName = input('Please enter your name: ') 
age = input('Please enter your age: ') 

factor = 2 
finalAge = age + factor **ERRORS OUT ON THIS LINE** 
multAge = age * factor 
divAge = age/factor 


print('In', factor, 'years you will be', finalAge, 'years old', userName) 
print('Your age multiplied by', factor, 'is', multAge) 
print('Your age divided by', factor, 'is', divAge) 

Когда я ввести Int (возраст) + фактор, а не возраст, он прекрасно работает. Но автор говорит, что python автоматически определяет тип переменной, когда вы его вводите. Таким образом, в этом случае, когда я вхожу в возраст = 20, тогда возраст должен стать целым числом автоматически правильным?

С нетерпением ждем любой помощи!

+1

Учебник, который вы используете для Python 2.x, но вы используете Python 3.x.Существует несколько важных различий между ними, и вы должны использовать версию Python, которая соответствует учебнику. Тем не менее, полагаясь на 'input()' для преобразования значений для вас, это плохая идея, даже в учебнике Py2.x ... – kindall

ответ

1

От doc

Затем функция считывает строку из входных данных, преобразует его в строку (отпарной заднюю новой строки), и возвращает это.

Как вы можете видеть, input() функция в Python 3 + возвращает строку путем преобразования любой входной вы получаете, так же, как raw_input() в питона 2.x.

Таким образом, age, очевидно, представляет собой строку.

Вы не можете добавить строку с целым числом, следовательно, ошибку.

не может преобразовать Int объект ул неявно

int(age) преобразует age в целое, поэтому он работает в вашем случае.

Что вы можете сделать:

Использование:

age = int(input('Please enter your age: ')) 

отдать свой вклад в целое число в явном виде.

0

Ваша проблема в том, что ввод возвращает строку (так как в общем случае ввод из командной строки является текстом). Вы можете сделать это для int, чтобы удалить ошибку, как вы это сделали.

Python автоматически определяет тип ваших переменных в вашей программе, если у них еще нет типа - он не автоматически преобразует типизированные переменные в разные типы.

0

Python не знает, какую операцию вы пытаетесь сделать, если оператор «+» может использоваться как для конкатенации строк, так и для добавления чисел.

Таким образом, он не может знать, если вы пытаетесь сделать

finalAge = int(age) + factor #finalAge is an integer 

или

finalAge = age + str(factor) #finalAge is a string 

Вам необходимо явно преобразовать переменные, поэтому он не будет неоднозначным.

В вашем случае int (age) возвращает целое число, которое является правильным способом получить то, что вы хотите.

Смежные вопросы