鱼C论坛

 找回密码
 立即注册
查看: 2876|回复: 10

关于for函数和print函数的一些疑问

[复制链接]
发表于 2020-9-6 16:43:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码如下
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([yinshu])
a=len(yinshu)
if a<2:
    print('该数为素数')
else:
    print ('%d=%d*%d'%(shuru,yinshu[0],yinshu[1]))
运行报错:
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的条件
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-6 16:56:30 | 显示全部楼层
  1. print(shuru, end = "=")
  2. print(*yinshu, sep = "*")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-6 17:04:03 | 显示全部楼层
  1. shuru = shuru / yinshu
复制代码

你的for循环里,这句话,导致出现浮点型,比如shuru输入5,到了这边,shuru就变成1.0了,再进入第二次循环,就报错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

那应该怎么改呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-6 17:17:27 | 显示全部楼层

你这句话好像会报错
print(*yinshu, sep = "*")
TypeError: print() argument after * must be an iterable, not int
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-6 18:52:05 | 显示全部楼层
报错的原因是:
for i in range(1,shuru):
    yinshu=duanchufa(shuru)
    shuru=shuru/yinshu
    yinshujihe.extend([yinshu])
红色部分:shuru=shuru/yinshu已经是float了,再次将“shuru”作为蓝色部分参数传入后,到range(0,a)报错。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-6 19:56:39 | 显示全部楼层
willfeh 发表于 2020-9-6 18:52
报错的原因是:
for i in range(1,shuru):
    yinshu=duanchufa(shuru)

那请问应该怎么改呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-7 09:09:48 | 显示全部楼层
YIRANNA 发表于 2020-9-6 19:56
那请问应该怎么改呢

可以试下加一行:yinshu = int(yinshu),但是要考虑是否符合你的程序逻辑。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-7 10:42:04 From FishC Mobile | 显示全部楼层
你可以尝试一下除法取整,shuru=shuru//yinshu
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-11 22:41:23 | 显示全部楼层
willfeh 发表于 2020-9-7 09:09
可以试下加一行:yinshu = int(yinshu),但是要考虑是否符合你的程序逻辑。

加过了,还是不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-11 23:23:58 | 显示全部楼层
代码改成这样吧
  1. # 代码如下

  2. def duanchufa(a):
  3.     #print(f'传入参数{a}')
  4.     i = 2
  5.     for c in range(0, a):
  6.         if a % i == 0:
  7.             return i
  8.         else:
  9.             i += 1

  10. def run(shuru):
  11.     yinshujihe = []
  12.     for i in range(1, shuru):
  13.         if shuru>1:
  14.             yinshu = duanchufa(shuru)
  15.             #print(f'因素 {yinshu}')
  16.             shuru = shuru // yinshu
  17.             yinshujihe.extend([yinshu])

  18.     return yinshujihe

  19. shuru = input('输入一个要分解的因数')
  20. shuru = int(shuru)

  21. yinshujihe = run(shuru)
  22. #print(yinshujihe)
  23. if len(yinshujihe) < 2:
  24.     print('该数为素数')
  25. else:
  26.     p=f'{shuru} = {yinshujihe[0]}'
  27.     for num in yinshujihe[1:]:
  28.         p=p+f' * {num}'
  29.     print(p)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-27 01:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表