关于for函数和print函数的一些疑问
代码如下shuru=input('输入一个要分解的因数')
shuru=int(shuru)
yinshujihe=[]
d=shuru
def duanchufa(a):
i=2
for c in range(0,a):
if a%i==0:
return i
break
else:
i+=1
for i in range(1,shuru):
yinshu=duanchufa(shuru)
shuru=shuru/yinshu
yinshujihe.extend()
a=len(yinshu)
if a<2:
print('该数为素数')
else:
print ('%d=%d*%d'%(shuru,yinshu,yinshu))
运行报错:
for c in range(0,a):
TypeError: 'float' object cannot be interpreted as an integer
但是我的程序中并没有关于浮点变量的声明,这个错误不知道怎么解决
还有最后的print函数
如果我想要输出类似100=2*2*5*5或者10=2*5的效果,应该怎么输入print的条件 print(shuru, end = "=")
print(*yinshu, sep = "*") shuru = shuru / yinshu
你的for循环里,这句话,导致出现浮点型,比如shuru输入5,到了这边,shuru就变成1.0了,再进入第二次循环,就报错了 疾风怪盗 发表于 2020-9-6 17:04
你的for循环里,这句话,导致出现浮点型,比如shuru输入5,到了这边,shuru就变成1.0了,再进入第二次循 ...
那应该怎么改呢
liuzhengyuan 发表于 2020-9-6 16:56
你这句话好像会报错
print(*yinshu, sep = "*")
TypeError: print() argument after * must be an iterable, not int 报错的原因是:
for i in range(1,shuru):
yinshu=duanchufa(shuru)
shuru=shuru/yinshu
yinshujihe.extend()
红色部分:shuru=shuru/yinshu已经是float了,再次将“shuru”作为蓝色部分参数传入后,到range(0,a)报错。 willfeh 发表于 2020-9-6 18:52
报错的原因是:
for i in range(1,shuru):
yinshu=duanchufa(shuru)
那请问应该怎么改呢 YIRANNA 发表于 2020-9-6 19:56
那请问应该怎么改呢
可以试下加一行:yinshu = int(yinshu),但是要考虑是否符合你的程序逻辑。 你可以尝试一下除法取整,shuru=shuru//yinshu willfeh 发表于 2020-9-7 09:09
可以试下加一行:yinshu = int(yinshu),但是要考虑是否符合你的程序逻辑。
加过了,还是不行
代码改成这样吧
# 代码如下
def duanchufa(a):
#print(f'传入参数{a}')
i = 2
for c in range(0, a):
if a % i == 0:
return i
else:
i += 1
def run(shuru):
yinshujihe = []
for i in range(1, shuru):
if shuru>1:
yinshu = duanchufa(shuru)
#print(f'因素 {yinshu}')
shuru = shuru // yinshu
yinshujihe.extend()
return yinshujihe
shuru = input('输入一个要分解的因数')
shuru = int(shuru)
yinshujihe = run(shuru)
#print(yinshujihe)
if len(yinshujihe) < 2:
print('该数为素数')
else:
p=f'{shuru} = {yinshujihe}'
for num in yinshujihe:
p=p+f' * {num}'
print(p)
页:
[1]