2016-03-30 2 views
0

В настоящее время я пытаюсь изучить Python из книги, и у меня возникает проблема. В принципе, я должен написать программу, чтобы сделать что-то, называемое последовательностью Collatz. Код выглядит следующим образом:Преобразование str в int в Python

print("Please enter a number") 
number = input() 

int(number) 

while number > 1: 
     collatz() 

def collatz(number): 
     if number % 2 == 0: 
       number = number // 2 
       print(number) 
       return number 
     else: 
       number = 3 * number + 1 
       print(number) 
       return number 

Так что, когда я пытаюсь выполнить код, приведенный выше, я получаю следующий результат:

RESTART: C:/Users/Gillian/AppData/Local/Programs/Python/Python35-32/Collatz.py
Please enter a number
12
Traceback (most recent call last): File "C:/Users/Gillian/AppData/Local/Programs/Python/Python35-32/Collatz.py", line 6, in
while number > 1:
TypeError: unorderable types: str() > int() Blockquote

Очевидно, что моя переменная время считывается как строка, когда она должна быть целое число. Мой вопрос: почему? Я думал, что часть в строке 4, где я меняю тип данных числа на int, должна исправить это, но это не так.

Инструкции, которые я пытаюсь выполнить, если это имеет значение для моего вопроса, являются here в нижней части страницы.

+0

Вы не присваиваете результат 'int (number)' ни к чему. Рассмотрим 'number = int (number)'. – larsks

+0

Удивительный, спасибо. –

ответ

1

После этого int(number), вы должны назначить его number снова:

number = int(number) 

Это потому, что int(number) само по себе не меняет number, он просто возвращает версию низринул к целому типу.

Вы также можете упростить код путем объединения ввода и литья в одно:

number = int(raw_input("Please enter a number")) 

в Python 2.7. В Python 3 замените raw_input на input.

+0

ahh вы избили меня за секунды: P рассказать ему о том, как комбинировать его подсказку и плохо удалить мою: P –

+0

Сделка, и все. :) –

+0

@GillianWeisgram Лучше попросить прощения, чем разрешение. :) Но да, огонь. –