循环打印列表格式化

时间:2014-06-22 20:10:17

标签: python string loops python-2.7 while-loop

我只想使用下面的公式创建任何给定数字的因子列表。因此我不允许使用列表,我已经模仿使用字符串如下:

例如

,假设我们选择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

不使用list,for循环,int,function,只能使用字符串,

如何格式化循环输出以使其看起来像这样?:

[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, ]

任何人都可以帮助或建议我可以将打印状态放在哪里或如何修改它?谢谢!

4 个答案:

答案 0 :(得分: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)

输出&gt; [1,2,4]

答案 1 :(得分:0)

您可以使用以逗号结尾的print语句,以便在使用第二个print语句时不插入新行,那么您只需要确保第一次打印“[”并且最后一次打印“ ]“

例如

print "hello ",
print "world"

将返回&gt;&gt;&gt; hello 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

答案 2 :(得分: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]

答案 3 :(得分:0)

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

    i += 1

    print factors

factors(12)

这会将所有因子添加到名为factors的表中,然后在添加所有因子时,将打印出表因子。