在字符串格式化期间并非所有参数都转换了.. 没有 % 变量

Posted

技术标签:

【中文标题】在字符串格式化期间并非所有参数都转换了.. 没有 % 变量【英文标题】:not all arguments converted during string formatting.. NO % variables 【发布时间】:2018-01-11 22:38:02 【问题描述】:
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 的号码并在每次我想尝试一个新号码时保存。

我得到以下错误

TypeError: 在字符串格式化期间并非所有参数都转换' 在第 7 行。

请帮助一个菜鸟。

【问题讨论】:

请注意,while 循环下面的代码没有正确缩进。 【参考方案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
>>>

【讨论】:

以上是关于在字符串格式化期间并非所有参数都转换了.. 没有 % 变量的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:在字符串格式化python期间并非所有参数都转换了

TypeError:在字符串格式化python Flask期间并非所有参数都转换了[重复]

“在字符串格式化期间并非所有参数都转换”当 to_sql

Python 错误:TypeError:字符串格式化期间并非所有参数都转换

PyODBC 中的存储过程写道:字符串格式化期间并非所有参数都转换

Pandas DataFrame.to_sql() 错误 - 在字符串格式化期间并非所有参数都转换