我如何正确地使 for 循环位于一行中,用逗号且没有空格

how do i properly make a for loop sit on one line, with commas and no spaces

我是编码新手,目前有点沮丧,因为我必须在输出“1,2,fizz,4,buzz,fizz,7,8,fizz,buzz, 11,fizz,13,14,fizzbuzz,16,17,fizz,19,buzz" 不,我不能使用打印。

代码:

import sys
num1=int(input('Enter your number range: '))
for x in range(1,num1+1):
   if x % 3 == 0:
      print("Fizz",end=" ")
   if x % 5 == 0:
      print('Buzz',end=" ")
   if x % 3 != 0 and x % 5 != 0:
      print(str(x),end=" ")

结果:"enter your number range?"(假设是 20)

1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 Fizz Buzz 16 17 Fizz 19 Buzz 

所以你可以在同一行看到它,但我不想要空格,我希望每个数字和字母之间的逗号接受数字 15 应该在的位置,我希望它是一个词 "FizzBuzz",如示例所示:

1,2,fizz,4,buzz,fizz,7,8,fizz,buzz,11,fizz,13,14,fizzbuzz,16,17,fizz,19,buzz

这与我回答 here. If you look at the documentation for print 的问题基本相同,它说您打印了可变数量的对象(文档中的 *objects)。 print 采用 sep 关键字,这是您要用来分隔打印对象的字符。

如果您稍微修改一下代码,先将要打印的项目收集到一个列表中,然后一次全部打印:

num1=int(input('Enter your number range: '))
items = list()
for x in range(1,num1+1):
    if x % 3 == 0:
        items.append("Fizz")
    if x % 5 == 0:
        items.append('Buzz')
    if x % 3 != 0 and x % 5 != 0:
        items.append(str(x))

print(*items, sep=',')

当你运行它时:

Enter your number range: 10
1,2,Fizz,4,Buzz,Fizz,7,8,Fizz,Buzz

对于 *objects-syntax 你可以看看这个 SO-question.


考虑可同时被 3 和 5 整除的数字:

num1=int(input('Enter your number range: '))
items = list()
for x in range(1,num1+1):
    if x % 5 == 0 and x % 3 == 0:
        items.append('FizzBuzz')
    elif x % 3 == 0:
        items.append("Fizz")
    elif x % 5 == 0:
        items.append('Buzz')
    else:
        items.append(str(x))

print(*items, sep=',')

不要使用打印格式,而是简单地连接不同的字符串元素。 在解释器中输入:

','.join([     'FizzBuzz' if not(i%15) 
          else 'Fizz'     if not(i%3)
          else 'Buzz'     if not(i%5)
          else str(i)
          for i in range(1,a+1)
         ])

或者将上面一行放在打印语句中