2017-10-23 5 views
2

私は、ユーザー入力番号をとり、出力番号が1でないときに新しい番号を出力するpython3.3プログラム(Windows 10とメモ帳とコマンドラインを使用)を作ろうとしています。偶数の場合は2で除算し、奇数の場合は3で奇数の場合は1を掛けるだけで番号を変更します。退屈なものを自動化するシーケンス

def collatz(): 
    if collatz() == ' ': #if collatz() doesn't have a return value yet 
     number = input('Please Enter A Number. ') 
    number = int(number) 
    if number % 2 == 0: 
     number = number // 2 
     return number 
    else: 
     number = 3*number + 1 
     return number 

while number > 1: 
    collatz() 

私はたくさんの周りのものを移動し、私はループ内で第1の動作を繰り返すようにそれを得ている、と私は私に一つだけの数と、より多くのユーザーの入力を求めるプロンプトを与えるためにそれを得ていますか?誰かに教えてもらえますか

答えて

0

あなたはほとんどの部分を持っているようですが、正しい順序ではないようです。

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

my_number = int(input('Please Enter A Number: ')) 

print(my_number) 

while my_number > 1: 
    my_number = collatz(my_number) 
    print(my_number) 
0

何が必要なの1回の反復の後、それへの引数として数値を受け取り、別の番号を返す関数collatz()です:私はあなたがより多くのような何かをしたい推測しています。関数内でinput()を使用することは通常ありません。なぜなら、その関数はもはや再利用できなくなるからです。

は、以下のコードを検討:

def func(var): 
    print(var) 

func(45) 

整数45が機能func()に渡され、その後func()内部コマンドで使用することができるようにそれは、数45を出力します。 func()が終了すると、それは存在しなくなります。同様の方法で整数をcollatz()関数に渡したいと思うでしょう。

def func(): 
    return 5 

var = func() 
print(var) 

func()は5を返し、それはvarに保存されるように、このコードは、数5を出力します:

次のスニペットは、returnキーワードを使用して示しています。

コード内でこれらの両方のテクニックを使用して、関数の外でユーザーからの入力を受け取り、数値のcollatz()を呼び出して、その出力を次の繰り返しに渡して、

私は完全なコードを書いていません。あなたはそれを自分ですることができるはずですが、苦労しているなら教えてください。

関連する問題