2017-08-04 2 views
0
x = input() 
y = 1 
print (x) 
while 1 == y: 
if x == 1: 
    y == y + 1 
elif x % 2 == 0: #even 
    x = x // 2 
    print (x) 
else: 
    x = 3 * x + 1 
    print (x) 

Collat​​zの推測が分かっている場合は、そのための電卓を作成しようとしています。 xを自分の入力として使用したいので、xの番号を変更する必要はなく、新しい番号を試してみるたびに保存する必要はありません。文字列書式中にすべての引数が変換されません。NO%変数

私はnoobieを助けてくださいエラー

TypeError: not all arguments converted during string formatting' at line 7.

の下に取得します。

+0

注意を。 – Zcode

答えて

1

問題は、ユーザーの入力を取ることです。

x = input() 

xstrです。だから、この行に:

elif x % 2 == 0: #even 

文字列の補間オペレータとして% operator行為。

>>> mystring = "Here goes a string: %s and here an int: %d" % ('FOO', 88) 
>>> print(mystring) 
Here goes a string: FOO and here an int: 88 
>>> 

しかし、あなたが与えたinputは、このように、書式指定子を持っていない:

>>> "a string with no format specifier..." % 10 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: not all arguments converted during string formatting 
>>> 

あなたはモジュロ演算を実行するための%オペレータのためintにあなたのユーザー入力を変換する必要があります。今

x = int(input()) 

、それはあなたがやりたいだろう:whileループ以下のコードが正しくインデントされていないことを

>>> x = int(input("Gimme an int! ")) 
Gimme an int! 88 
>>> x % 10 
8 
>>> 
関連する問題