YIRANNA 发表于 2020-9-6 16:43:15

关于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的条件

liuzhengyuan 发表于 2020-9-6 16:56:30

print(shuru, end = "=")
print(*yinshu, sep = "*")

疾风怪盗 发表于 2020-9-6 17:04:03

shuru = shuru / yinshu
你的for循环里,这句话,导致出现浮点型,比如shuru输入5,到了这边,shuru就变成1.0了,再进入第二次循环,就报错了

YIRANNA 发表于 2020-9-6 17:15:58

疾风怪盗 发表于 2020-9-6 17:04
你的for循环里,这句话,导致出现浮点型,比如shuru输入5,到了这边,shuru就变成1.0了,再进入第二次循 ...

那应该怎么改呢

YIRANNA 发表于 2020-9-6 17:17:27

liuzhengyuan 发表于 2020-9-6 16:56


你这句话好像会报错
print(*yinshu, sep = "*")
TypeError: print() argument after * must be an iterable, not int

willfeh 发表于 2020-9-6 18:52:05

报错的原因是:
for i in range(1,shuru):
    yinshu=duanchufa(shuru)
    shuru=shuru/yinshu
    yinshujihe.extend()
红色部分:shuru=shuru/yinshu已经是float了,再次将“shuru”作为蓝色部分参数传入后,到range(0,a)报错。

YIRANNA 发表于 2020-9-6 19:56:39

willfeh 发表于 2020-9-6 18:52
报错的原因是:
for i in range(1,shuru):
    yinshu=duanchufa(shuru)


那请问应该怎么改呢

willfeh 发表于 2020-9-7 09:09:48

YIRANNA 发表于 2020-9-6 19:56
那请问应该怎么改呢

可以试下加一行:yinshu = int(yinshu),但是要考虑是否符合你的程序逻辑。

bonst 发表于 2020-9-7 10:42:04

你可以尝试一下除法取整,shuru=shuru//yinshu

YIRANNA 发表于 2020-9-11 22:41:23

willfeh 发表于 2020-9-7 09:09
可以试下加一行:yinshu = int(yinshu),但是要考虑是否符合你的程序逻辑。

加过了,还是不行

疾风怪盗 发表于 2020-9-11 23:23:58

代码改成这样吧
# 代码如下

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]
查看完整版本: 关于for函数和print函数的一些疑问