2017-08-04 100 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%變量

我得到以下錯誤

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

請幫助noobie出來。

+0

注意,while循環下面的代碼是不正確縮進。 – 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()) 

,它會做你想要什麼:

>>> x = int(input("Gimme an int! ")) 
Gimme an int! 88 
>>> x % 10 
8 
>>> 
相關問題