Fizzbuzz(将输出转换为字符串?)

时间:2016-03-08 16:42:27

标签: python string fizzbuzz

新来的,希望我可以帮助我。基本上,我的任务是用Python写一个fizzbuzz程序,到目前为止除了我收到的一些反馈之外这么好。

现在我必须确保程序的输出水平,并且不会在新行上垂直打印。根据我的理解和我的讲师提示,我需要转换函数来生成字符串并删除打印语句。

代码如下:

def fizzbuzz1 (num):
    for num in range(1, num): 
        if (num%3 == 0) and (num%5 == 0): 
             print("Fizzbuzz")
        elif ((num % 3) == 0):
             print("Fizz")
        elif ((num % 5) == 0):
             print("buzz")
        else :
             print (num)

def main (): 
    while True: #Just to keep my program up and running while I play with it
    num = input ("please type a number: ") #
    num = int (num)
    print ("Please select an type what option you wish to try: A) Is this Fizz or Buzz? B) Count saying fizz/buzz/fizzbuzz") 
    opt = input ("Please type A or B and press enter: ")
    if opt == "A": 
        fizzbuzz(num)
    elif (opt == "a")
        fizzbuzz(num)
    elif (opt == "B"):
        print (fizzbuzz1(num))
    elif (opt == "b"):
        print (fizzbuzz1(num))

main ()

我尝试过很多东西,而我的讲师似乎对帮助我似乎不太感兴趣。 Womp。如果我玩这段代码,我被建议回顾这个练习:

def func(num):
value = ‘’
for x in range(...):
    if   .... == .... :
        value += str(x) + ‘, ‘
return value[…]# You need to remove the last comma and the space

当我使用此代码时,我会在屏幕上显示数字。但是对于我的生活,我似乎无法将我所写的内容与其中的元素结合起来。我哪里误入歧途?

感谢您提供的任何建议/帮助。如果您确实选择回复,请为我保持尽可能简单。

干杯。

更新:感谢大家的建议,很多我不知道的尝试!

我还在Can't figure out how to print horizontally in python?

找到了一个帖子

其中有类似问题的答案。

2 个答案:

答案 0 :(得分:1)

你非常接近。我将采用的方法是将结果存储在列表中,然后join列表的内容以生成输出字符串。这是一个例子:

>>> def fizzbuzz1(num):
...     fb = []
...
...     # Iterate through the range, then use `fb.append()` to append the
...     # new element to the end of the list.
...     for n in range(1, num):
...         if not (n%3 or n%5):
...             fb.append('Fizzbuzz')
...         elif not n%3:
...             fb.append('Fizz')
...         elif not n%5:
...             fb.append('Buzz')
...         else:
...             fb.append(str(n))
...
...     return ', '.join(fb)
...
>>> fizzbuzz1(20)
'1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fizzbuzz, 16, 17, Fizz, 19'
>>>

答案 1 :(得分:1)

如果使用Python 3.x

,请尝试不使用新行进行打印
def fizzbuzz1 (num):
for num in range(1, num): 
    if (num%3 == 0) and (num%5 == 0): 
        print("Fizzbuzz ", end="")
    elif ((num % 3) == 0):
        print("Fizz ", end="")
    elif ((num % 5) == 0):
        print("buzz ", end="")
    else:
        print ( str(num) + " ")
print(" ")