我只需要用逗号分隔我的输出,这样它就会像这样打印1,2,等等
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、嘶嘶、4、嗡嗡、嘶嘶、7,8、嘶嘶、嗡嗡、11、嘶嘶、13,14、嘶嘶、16,17、嘶嘶、19、嗡嗡、
我已经复习了我的笔记和python教程,但我不知道如何去掉最后一个逗号,或者使用更有效的方法,而不仅仅是添加逗号而不是空格。
我以前问过这个问题,但我被措辞弄糊涂了,所以我的问题真的很困惑。我知道这可能很简单,但这是我第一次编程,所以我是个傻瓜。我的讲师还没有向我解释我该怎么做。我真的需要一些帮助/指点。谢谢
不是立即打印它们,而是将所有内容都放在字符串列表中。然后用逗号连接列表并打印结果字符串。
这可能是学习生成器的一个很好的例子。生成器看起来像是使用yield
而不是return
的普通函数。不同之处在于,当使用generator函数时,它的行为就像一个可迭代的对象,生成一系列值。尝试以下操作:
#!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=',')
有关print
函数参数,请参阅文档http://docs.python.org/3/library/functions.html#print,和处的*expression
调用参数http://docs.python.org/3/reference/expressions.html#calls.
最后一种print
方法的另一个优点是参数不必是字符串类型。gen()
定义显式使用str(x)
而不是纯x
的原因是因为.join()
要求所有联接值都必须是字符串类型。print
在内部将所有pased参数转换为字符串。如果gen()
使用纯yield x
,并且您坚持使用联接,则join
可以使用生成器表达式将参数转换为动态字符串:
','.join(str(x) for x in gen()))
它显示在我的控制台上:
c:tmp___pythonJessicaSmithso18500305>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