2013-02-27 3 views
0

Так что я не могу это понять. Без цикла while он работает нормально, но как только я применяю цикл, он перестает работать правильно. По какой-то причине он обрабатывает x как строку. Как если бы x было 2, оно напечатало бы y как «2222» вместо 16. Я все еще новичок в этом, может кто-то сказать, почему? Благодаря!Пока цикл в Python конвертирует целое число в строку?

go = 'y' 

while go == 'y': 

    print('enter x') 
    x = input() 

    y = x * 4 

    print(y) 
print('go again?') 

go = input() 

ответ

1

Функция Python 3's input всегда возвращает строку. Это изменение от Python 2, где input возвращает различные типы объектов Python в зависимости от того, что было введено пользователем. Версия Python 3 эквивалентна Python 2's raw_input.

С учетом этого фона легко исправить свой код. Просто вызовите конструктор int, чтобы превратить вашу строку в целое число. Или, если вы хотите поддерживать нецелые значения (например, 1.4), вместо этого используйте float.

Как в стороне, так как ваш код в настоящее время отформатирован в вопросе, он имеет цикл ввода. Является ли ваша логика изменением переменной go на самом высоком уровне? Если это так, он никогда не изменится во время цикла, который будет работать вечно.

+1

Thanks Blckknight! Я получил его сейчас, я просто использовал 'x = int (input())'. И я увидел, что все в порядке. Я просто не понимаю, почему этот же код работал вне цикла while ... – user2113766

0

Это на самом деле зависит от вашей версии python. input автоматически преобразует вашу строку в целое число, если оно найдет ее. Чтобы предотвратить это, используйте функцию raw_input в python < 3. Для python 3 и выше я считаю, что это поведение по умолчанию.

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