2017-09-28 8 views
1

無限ループが発生しています。私は新しい数値変数として結果を秘密にしてwhileループに戻す方法についてはわかりません。collat​​zシーケンスinfinteループエラー

#Collatz squence 

import sys 
def collatz(): 
    try: 
     print('Enter a number') 
     number = int(input()) 
    except: 
     ValueError 
     print('Please type an integer') 

    while number != 1: 
     if number %2 == 0: 
      result = number//2 

      print(result) 

     elif number %2 == 1: 

      result = 3*number + 1 

      print(result) 

     **result = number** 


    while number == 1: 
     print ('You have arrived at the number itself') 
     sys.exit() 

collatz() 

答えて

0

次作品:私は結果に番号を設定し

#Collatz squence 

import sys 
def collatz(): 
    try: 
     print('Enter a number') 
     number = int(input()) 
    except ValueError: 
     print('Please type an integer') 
     sys.exit(1) 

    while number != 1: 
     if number %2 == 0: 
      result = number//2 
      print(result) 

    elif number %2 == 1: 
     result = 3*number + 1 
     print(result) 
    number = result # set the number to the result 

    while number == 1: 
     print ('You have arrived at the number itself') 
     sys.exit() 

collatz() 

通知は、あなたのコードに番号が変更されていない、ので、何度も同じコードブロックを打つ保たれません。例外にsys.exit呼び出しを追加しましたが、誰かが悪い値を入力した場合は続行したくありません。

+1

だから、A = B!= B = Aである。説明をありがとう。 –

+0

このコードは現在のところインデントされていないので、あなたはそれを修正して実行でき、それから学ぶことができます。 – cdlane

関連する問題