【发布时间】:2020-08-29 10:13:25
【问题描述】:
我正在编写一个程序,输入一个数字,区分该数字是否为素数,然后打印出来。
当我输入'o'时,我把函数再次运行程序。
下面是程序
print('Prime number distinction')
print('=' * 50)
again = 'o'
while again == 'o':
s = 0
a = 0
i = 0
pn = input('Please enter a number')
pn = int(pn)
if pn == 2 or pn == 3:
print('%dis a prime number' %pn)
else:
for i in range(2, pn):
if pn % i == 0:
print('%dis not a prime number.' %pn)
a = pn/i
i = str(i)
pn = str(pn)
a = int(a)
print(pn+'='+i+'x'+'%d' %a)
else:
s = s + 1
if s == pn - 2:
print('%dis a prime number.' %pn)
again = input('Enter o to do it one more time.')
但是'TypeError:字符串格式化期间并非所有参数都转换' 发生错误。 奇怪的是,程序按预期运行后,出现了错误。
line 13, in <module>
if pn % i == 0:
调用的部分有错误, 但是,它是程序操作的重要组成部分, 如果这里发生错误,整个程序将不得不中断。 我想知道为什么。
我会修改程序。 很多人告诉我添加一个'break'语句
print('Prime number distinction')
print('=' * 50)
again = 'o'
while again == 'o':
s = 0
a = 0
i = 0
pn = input('Please enter a number')
pn = int(pn)
if pn == 2 or pn == 3:
print('%dis a prime number' %pn)
else:
for i in range(2, pn):
if pn % i == 0:
print('%dis not a prime number.' %pn)
a = pn/i
i = str(i)
str_pn = str(pn) # use a new variable str_pn
a = int(a)
print(str_pn+'='+i+'x'+'%d' %a) # use str_pn here
break
else:
s = s + 1
if s == pn - 2:
print('%dis a prime number.' %pn)
again = input('Enter o to do it one more time.')
现在结果只打印一次。 感谢您的反馈。
【问题讨论】:
-
1.什么输入值给你这个错误? 2. 请粘贴完整的错误信息,而不仅仅是开头。
-
您需要为您的问题提供错误/回溯。另外,我建议使用 f 字符串代替插值。
f"{pn} is a prime number"代替"%d is a prime number" % pn,f"{pn}={i}x{a}"代替str(pn)+'='+i+'x'+'%d' %a)等 -
您使用的是 IDE 吗?哟应该了解它的调试功能。如果不是 Python Debugger 模块值得学习。
-
如果你使用字符串格式,你不需要make
pna str - stackoverflow.com/a/13945777/2823755, docs.python.org/3/library/string.html#formatstrings
标签: python