我正在尝试运行一个简单的程序来检查一个数字,看它是否是素数。我让用户提供要检查的号码。但是,当我运行程序时,我不断收到以下错误:
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.请让我知道我做错了什么以及如何理解我的程序运行不正常的原因。提前谢谢!
答案 0 :(得分:1)
在Python 3中input()
总是返回字符串,因此您必须将num
转换为int
- 即。 num = int(num)
。
现在num % test
表示some_string % some_int
,Python将其视为字符串格式。它尝试在some_int
字符串中使用some_string
作为参数,但它无法找到此some_int
的特殊位置,并且您会收到错误。
答案 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:'))