0

私は独学で Python を学んでいますが、 return 関数の print() で使用される end="" に相当するものがあるかどうか知りたいです。例えば:

def shape(num,x):
    for col in reversed(range(num)):
            for row in range(col+1):
                print(x,end="")
            print()

希望する結果が得られますが、return 関数を使用して同じ結果を得るにはどうすればよいでしょうか?

4

3 に答える 3

4

文字列を返す方法を尋ねていますか? 以下は、使用したのと同じフォームに従う1つの方法です。

def shape(num,x):
    result = ''
    for col in reversed(range(num)):
            for row in range(col+1):
                result += x 
            result += '\n'
    return result

print (shape(4, '*'), end="")

ただし、文字列で使用+=するのは悪い形式です。コードを改善し続けるときは、リスト内包表記とstr.join()関数を調べてください。

次のような結果になる可能性があります。

    return '\n'.join('*'*(col+1) for col in reversed(range(num)))
于 2013-10-02T17:06:53.430 に答える
1

戻り値を出力します。

def shape(num):
    x = 0
    for col in reversed(range(num)):
        for row in range(col+1):
           x += row 
   return x
print(shape(82))
于 2013-10-02T17:06:03.457 に答える
0

これを行う別の方法は、ジェネレーター関数を使用することです。

def shape(num, x):
    for col in reversed(range(num)):
        yield x * (col + 1)

for line in shape(4, '*'):
    print(line)

注: ジェネレーター関数は、Robᵩ が示したジェネレーター式 ( 内'\n'.join()) と基本的に同じことを行いますが、より複雑なケースでジェネレーター関数を作成する方法を知っておく価値があります。

于 2013-10-02T17:33:17.430 に答える