鱼C论坛

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

[已解决]代码敲出来跟想要的有出入,大佬看看该怎么改

[复制链接]
发表于 2022-12-30 15:11:11 | 显示全部楼层 |阅读模式

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

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

x
N=int(input())
for num in range(2, N):
    num_list = []
    for i in range(1, num):
        if num % i == 0:
            num_list.append(i)
    if num == sum(num_list):
        print("{} its factors are {}".format(num ,num_list))

代码输出的结果
6 its factors are [1, 2, 3]
28 its factors are [1, 2, 4, 7, 14]
496 its factors are [1, 2, 4, 8, 16, 31, 62, 124, 248]



想要的结果
6 its factors are 1 2 3
28 its factors are 1 2 4 7 14
496 its factors are 1 2 4 8 16 31 62 124 248
最佳答案
2022-12-30 15:24:56
本帖最后由 isdkz 于 2022-12-30 15:33 编辑

N=int(input())
for num in range(2, N):
    num_list = []
    for i in range(1, num):
        if num % i == 0:
            num_list.append(i)
    if num == sum(num_list):
        print("{} its factors are {}".format(num , ' '.join(map(str, num_list))))  # 改了这里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-30 15:17:51 | 显示全部楼层
N=int(input())
for num in range(2, N):
    num_list = []
    for i in range(1, num):
        if num % i == 0:
            num_list.append(i)
    if num == sum(num_list):
        print("{} its factors are {}".format(num , ' '.join(num_list)))  # 改了这里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-30 15:19:58 | 显示全部楼层
N = int(input())
for num in range(2, N):
    num_list = []
    for i in range(1, num):
        if num % i == 0:
            num_list.append(i)
    if num == sum(num_list):
        print(num, "its factors are ", end = " ")
        for number in num_list:
            print(number, end = " ")
        print()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-30 15:21:05 | 显示全部楼层

这个貌似不行吧
>>> ' '.join([1, 2, 3])
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    ' '.join([1, 2, 3])
TypeError: sequence item 0: expected str instance, int found
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-30 15:23:42 | 显示全部楼层
N=int(input())
for num in range(2, N):
    num_list = []
    for i in range(1, num):
        if num % i == 0:
            num_list.append(i)
    if num == sum(num_list):
        print("{} its factors are {}".format(num, str(num_list)[1:len(str(num_list))-1].replace(',', '')) )
或者
N=int(input())
for num in range(2, N):
    num_list = []
    for i in range(1, num):
        if num % i == 0:
            num_list.append(i)
    if num == sum(num_list):
        nums = ''
        for i in num_list: nums += str(i)+' '
        print("{} its factors are {}".format(num, nums[:len(nums)-1]))#去掉末尾空格
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-30 15:24:13 | 显示全部楼层

是我疏忽了,我改一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-30 15:24:56 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2022-12-30 15:33 编辑

N=int(input())
for num in range(2, N):
    num_list = []
    for i in range(1, num):
        if num % i == 0:
            num_list.append(i)
    if num == sum(num_list):
        print("{} its factors are {}".format(num , ' '.join(map(str, num_list))))  # 改了这里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-30 15:39:32 | 显示全部楼层

输入20224
输出最后一项的时候卡了。运行超时
20224
6 its factors are  1 2 3
28 its factors are  1 2 4 7 14
496 its factors are  1 2 4 8 16 31 62 124 248
8128 its factors are  1 2 4 8 16 32 64 127 254 508 1016 2032 4064
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-30 15:47:02 | 显示全部楼层
爱意随风起9306 发表于 2022-12-30 15:39
输入20224
输出最后一项的时候卡了。运行超时
20224

数太大了,建议改进一下算法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-30 16:04:39 | 显示全部楼层
isdkz 发表于 2022-12-30 15:47
数太大了,建议改进一下算法

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-30 16:08:47 | 显示全部楼层
for num in range(2, N):
改成for num in range(2, N+1):
要不然执行不到N
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 03:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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