1
注:while文が整数であるときにwhile文がFalseに評価されなかった理由を理解しようとしていたので、これは重複とは思われません条件が満たされてもループが中断しない(Collatz Sequence)
プログラムが入力を受け取り、次のアルゴリズムを使用して入力を1に減らす、Pythonで退屈なものの行使を自動化しています。代わりに、whileループの破壊の
#even/2
#odd * 3 + 1
def collatz():
print("Enter number:")
number = input()
try:
data = int(number) # Input Validation
while int(data) != 1:
if data % 2 == 0: #Number is even
data = int(data/2)
print(data)
if data % 2 == 1: # Number is odd
data = int(3*data+1)
print(data)
except:
print("Please input a valid value")
collatz()
collatz()
数が1に減少される場合、ループは継続し、それが3で1を乗算し(普通奇数として)1を加算します。私は浮動小数点を返すかもしれないと思ったので、多くのint変換が行われました。
したがって、不要なint型の変換はどこにあるのか、while文を使用してそれを中断する方法を教えてください。コードのクリーンアップはあなたが適切とちょうど一般的に、より良いあなたのコードを動作させるためにアップneatenすべきいくつかのことがあります
はすべてのヒントや改善をありがとう! 1つの関数にすべてのコードを残していたのですが、nの場合や私のケースのデータが1のときにwhileループが壊れないのはなぜですか? –
@KOOTSHOOTSは見つかりました! 2つの 'if'文を実行しているので、' data'が '2'の場合、最初のテストに合格し、' 2'で割り、 '1'を割ります。それが今や奇妙であったことを見て、それに「3」を乗じて「1」を加えることによってそれを維持してください。だから私の関数が動作しているのは、私が 'else'を使ったからです。 **:)**その時受け入れてください! –