2016-03-30 18 views
0

現在、本からPythonを学びたいと思っています。問題が発生しています。基本的に私はCollat​​zシーケンスと呼ばれるものを実行するプログラムを書くことになっています。コードは以下の通りである:Pythonでstrをintに変換する

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を変更しないためですが、それは単にバージョンを返します。

また、入力を組み合わせて一つにキャストすることによって、あなたのコードを簡素化することができます:Pythonの2.7で

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

を。 Python 3では、raw_inputinputに置き換えてください。

+0

あなたは秒で私を打ち負かす:Pは彼のプロンプトと病気の削除鉱山を組み合わせることについて教えてください:P –

+0

取引、そして完了。 :) –

+0

@GillianWeisgram許可よりも許してもらう方がいいです。 :)しかし、はい、火を遠ざける。 –

関連する問題