While循环打印列表格式化

3

我希望能够使用以下公式从任意给定的数字创建因子列表。由于不允许使用列表,因此我使用字符串进行模拟,如下所示:

例如,假设我们选择num=12:

def factors(num):
    i=1 
    while i <= num :
        if num % i == 0:
            print i

        i = i + 1

这段代码输出:
1
2
3
4
6
12

如果不能使用列表、for循环、int函数,只能使用字符串,如何格式化循环输出以使其看起来像这样:

[1, 2, 3, 4 ,6 ,12]

我先尝试了以下操作:
num = 12
i = 1
while i <= num :
    if num % i == 0:
        a=str("[")+str(i)+", "+str("]")
        print a

    i = i + 1

这将打印:

[1, ]
[2, ]
[3, ]
[4, ]
[6, ]
[12, ]

有人能帮忙或建议我在哪里添加打印状态,或如何修改吗?谢谢!


我认为您可能对print输出内容和函数return返回内容时REPL显示的区别感到困惑。 - Blender
我觉得我对计算机如何存储值感到困惑。我真正想要的是让这个函数def factors(num):使用那段代码并返回[a,b,c,d]等。 - SteveZrg
是的,当列表在 REPL 中打印输出时,它的表示形式就像这样。 - Blender
while 循环中,您可以使用 a += str(i) 来连接每个 str(i)。如果开始时 a = str(i),那么它将在每次循环中为变量 a 分配一个新值(丢弃旧值)。然后,在循环后,您可以打印 a - Eric Tsui
4个回答

0

你可以使用以逗号结尾的print语句,这样在使用第二个print语句时就不会插入新行,然后你只需要确保第一次打印"[",最后一次打印"]"

例如:

print "hello ",
print "world"

会返回 >>> 你好世界

代码看起来会像这样

def factors(num):
    i=1 
    while i <= num :
        if i == 1:
            if num % i == 0:
                print "[",
            else:
                 print "[",
        if i == num:
            print "%s]"%(i)
        elif num % i == 0:
            if i == num:
               print i,"]"
            else:
                print "%s,"%(i),




        i = i + 1

0
你可以通过使用+=将每个str(i)连接到字符串a
def factors(num):
    i = 1
    a = "["
    while i < num :
        if num % i == 0:
            a+=str(i)+", "
        i = i + 1
    print(a + str(num) + str("]"))

factors(12)

输出:

   [1, 2, 3, 4, 6, 12]

0
def factors(num):
    i = 1
    factors = []
    while i <= num:
        if num % i == 0:
            factors.append(i)

    i += 1

    print factors

factors(12)

这将所有因子添加到名为factors的表中,当所有因子都被添加时,表factors将被打印出来。

0
def factors(num):
    i=1
    result="["
    while i <= num :
        if num % i == 0:
            result=result+str(i)+","
        i+=i

    result=result[:-1]+"]"
    print result

factors(12)

输出 > [1,2,4]


@SteveZrg 我很久以前就给了你这个答案。当时有一个错误的缩进。第一次你没有要求“不能使用列表、for循环、整数、函数,只能使用字符串”,但我的函数仍然没有使用其中任何一个。 - user3672754

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接