程序错误TypeError:并非在字符串格式化期间转换的所有参数

时间:2016-12-29 03:05:08

标签: python python-3.x

我正在尝试运行一个简单的程序来检查一个数字,看它是否是素数。我让用户提供要检查的号码。但是,当我运行程序时,我不断收到以下错误:

Traceback (most recent call last):
  File "HelloWorld.py", line 6, in <module>
    if num % test == 0 and num != test:
TypeError: not all arguments converted during string formatting

以下是我的代码:

num = input('Please choose a number between 2 and 9:')
prime = True 

for test in range(2,10):

    if num % test == 0 and num != test:
        print(num,'equals',test, 'x', num/test)
        prime = False

if prime:
    print(num, 'is a prime number!')
else:
    print(num, 'is not a prime number!')

我正在使用Python 3.请让我知道我做错了什么以及如何理解我的程序运行不正常的原因。提前谢谢!

2 个答案:

答案 0 :(得分:1)

在Python 3中input()总是返回字符串,因此您必须将num转换为int - 即。 num = int(num)

现在num % test表示some_string % some_int,Python将其视为字符串格式。它尝试在some_int字符串中使用some_string作为参数,但它无法找到此some_int的特殊位置,并且您会收到错误。

BTW:https://pyformat.info

答案 1 :(得分:0)

由于input()返回str个对象,num包含字符串而不是整数。在字符串上使用模数运算符时,Python假定您尝试执行c-style string formatting,但在字符串中找不到特殊格式字符,并引发异常。 &#39;

如果您希望python正确解释您的程序,则需要将num转换为int对象而不是str对象:

num = int(input('Please choose a number between 2 and 9:'))