在python 3中用逗号分隔输出

时间:2013-08-29 00:11:08

标签: python python-3.x

我只需要用逗号分隔出来,所以它会像这样打印1,2,fizz等

for x in range (1, 21):
    if x%15==0:
        print("fizzbuzz",end=" ")
    elif x%5==0:
        print (("buzz"),end=" ") 
    elif x%3==0:
        print (("fizz"),end=" ")
    else:
        print (x,end=" ")

我可以添加一个逗号“”,但我的列表最后会用逗号打印,如1,2,fizz,4,buzz,fizz,7,8,fizz,buzz,11,fizz,13, 14,fizzbuzz,16,17,嘶嘶声,19,嗡嗡声,

我已经阅读了我的笔记并继续使用python教程,但我不知道如何摆脱最后一个逗号或使用更有效的方法,而不是仅仅添加逗号而不是空格。

之前我问过这个问题,但我对措辞感到困惑,所以我的问题真的令人困惑。我知道这可能很简单,但这是我第一次编程,所以我是一个菜鸟。我的讲师没有向我解释我是如何做到这一点的。我真的可以使用一些帮助/指针。感谢。

2 个答案:

答案 0 :(得分:5)

不是立即打印它们,而是将所有内容都放在字符串列表中。然后用逗号连接列表并打印结果字符串。

答案 1 :(得分:4)

这可能是学习生成器的一个很好的例子。生成器看起来像使用yield而不是return的普通函数。不同之处在于,当使用生成器函数时,它表现为可生成一系列值的可迭代对象。请尝试以下方法:

#!python3

def gen():
    for x in range (1, 21):
        if x % 15 == 0:
            yield "fizzbuzz"
        elif x % 5 == 0:
            yield "buzz"
        elif x % 3 == 0:
            yield "fizz"
        else:
            yield str(x)


# Now the examples of using the generator.
for v in gen():
    print(v)

# Another example.
lst = list(gen())   # the list() iterates through the values and builds the list object
print(lst)

# And printing the join of the iterated elements.
print(','.join(gen()))  # the join iterates through the values and joins them by ','

# The above ','.join(gen()) produces a single string that is printed.
# The alternative approach is to use the fact the print function can accept more
# printed arguments, and it is possible to set a different separator than a space.
# The * in front of gen() means that the gen() will be evaluated as iterable.
# Simply said, print can see it as if all the values were explicitly writen as 
# the print arguments.
print(*gen(), sep=',')

请参阅http://docs.python.org/3/library/functions.html#print处的print函数参数的文档,http://docs.python.org/3/reference/expressions.html#calls处的*expression调用参数。

最后一个print方法的另一个优点是参数不必是字符串类型。 gen()定义明确使用str(x)而不是普通x的原因是因为.join()要求所有连接的值都必须是字符串类型。 print在内部将所有已发布的参数转换为字符串。如果gen()使用普通yield x,并且您坚持使用联接,join可以使用生成器表达式将参数转换为动态字符串:

','.join(str(x) for x in gen())) 

它显示在我的控制台上:

c:\tmp\___python\JessicaSmith\so18500305>py a.py
1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizzbuzz
16
17
fizz
19
buzz
['1', '2', 'fizz', '4', 'buzz', 'fizz', '7', '8', 'fizz', 'buzz', '11', 'fizz',
'13', '14', 'fizzbuzz', '16', '17', 'fizz', '19', 'buzz']
1,2,fizz,4,buzz,fizz,7,8,fizz,buzz,11,fizz,13,14,fizzbuzz,16,17,fizz,19,buzz
1,2,fizz,4,buzz,fizz,7,8,fizz,buzz,11,fizz,13,14,fizzbuzz,16,17,fizz,19,buzz