0

out をコンマで区切るだけで、この 1,2,fizz ect のように出力されます

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 チュートリアルに行きましたが、スペースの代わりにそのコンマを追加するだけでなく、最後のコンマを取り除く方法やより効果的な方法を使用する方法がわかりません。

以前も質問したのですが、言葉遣いがわかりにくかったので、私の質問は本当に紛らわしいものになりました。これは簡単かもしれませんが、プログラミングは初めてなので初心者です。私の講師は、私がこれを行う方法を説明してくれませんでした。私は実際にいくつかのヘルプ/ポインターを使用できました。ありがとう。

4

2 に答える 2

5

それらをすぐに出力する代わりに、すべてを文字列のリストにします。次に、リストをコンマで結合し、結果の文字列を出力します。

于 2013-08-29T00:27:30.633 に答える
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=',')

print関数の引数についてはhttp://docs.python.org/3/library/functions.html#printのドキュメントを参照し、引数の*expression呼び出しについてはhttp://docs.python.org/3/reference/expressions.html#を参照してください。を呼び出します

最後のprintアプローチのもう 1 つの利点は、引数が文字列型である必要がないことです。プレーンではなく明示gen()的に定義を使用した理由は、結合されたすべての値が文字列型でなければならないためです。は、渡されたすべての引数を内部的に文字列に変換します。がplainを使用し、結合を使用することを主張した場合、はジェネレーター式を使用して、引数をその場で文字列に変換できます。str(x)x.join()printgen()yield xjoin

','.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
于 2013-08-29T12:16:22.330 に答える