鱼C论坛

 找回密码
 立即注册
查看: 2455|回复: 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的条件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-6 16:56:30 | 显示全部楼层
print(shuru, end = "=")
print(*yinshu, sep = "*")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-6 17:04:03 | 显示全部楼层
shuru = shuru / yinshu
你的for循环里,这句话,导致出现浮点型,比如shuru输入5,到了这边,shuru就变成1.0了,再进入第二次循环,就报错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

那应该怎么改呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你这句话好像会报错
print(*yinshu, sep = "*")
TypeError: print() argument after * must be an iterable, not int
想知道小甲鱼最近在做啥?请访问 -> 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)报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

那请问应该怎么改呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

可以试下加一行:yinshu = int(yinshu),但是要考虑是否符合你的程序逻辑。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-7 10:42:04 From FishC Mobile | 显示全部楼层
你可以尝试一下除法取整,shuru=shuru//yinshu
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

加过了,还是不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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([yinshu])

    return yinshujihe

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

yinshujihe = run(shuru)
#print(yinshujihe)
if len(yinshujihe) < 2:
    print('该数为素数')
else:
    p=f'{shuru} = {yinshujihe[0]}'
    for num in yinshujihe[1:]:
        p=p+f' * {num}'
    print(p)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 17:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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