2017-02-18 3 views
0

より大きいカウントプリント多数の形式がどのようにPythonので、このような1つのパラメータ(数)accecpt機能、及び印刷フォーマットを書き込む行

1 2 3 4 5 6 7  8  9  10 
x xx xx xx xxx xxx xxx xxx xxx xxxx 
     x xx xx xxx xxx xxx xxx xxxx 
         x xx xxx xx 
1 
out: 
x 

input: 
2 
out: 
xx 

input: 
3 
xx  
x 

input: 
4 
out: 
xx 
xx 

input: 
5 
out: 
xxx 
xx 

Iはない要約任意の式をすることができこの解決策を扱うことは、それが一つの数学的問題かもしれません。

答えをご確認ください 私はそれを自分で解決しますが、私はこの方法がばかだと思います。

import sys 

def fun(num): 
    column_count = 1 

    for i in range(num): 
     # once column_count's square > i, columns + 1 
     if column_count **2 == i: 
      column_count += 1 

    for i in range(num + 1): 
     if i % column_count == 0: 
      sys.stdout.write('x\n') 
     else: 
      sys.stdout.write('x') 

    sys.stdout.flush() 

fun(10) 
+0

あなたのためにコードを記述していただきたいようです。多くのユーザーは、苦労しているコーダーのコードを作成したいと考えていますが、通常、ポスターが既に問題を解決しようとしているときにのみ役立ちます。この努力を実証する良い方法は、これまでに書いたコード、サンプル入力(もしあれば)、期待される出力、実際に得られる出力(出力、トレースバックなど)を含めることです。あなたが提供する詳細があれば、受け取る可能性のある回答が増えます。 [FAQ](http://stackoverflow.com/tour)と[How to Ask](http://stackoverflow.com/questions/how-to-ask)を確認してください。 – TigerhawkT3

答えて

0

あなたでしカウント%4 == 0、印刷( "\ n")を他の印刷回数が数より小さい間を通って、もし単にループ( "X"、終了= "")。

count = 0 
while count < number: 
    if count % 4 == 0: 
     print("\n") 
    print("x",end="") 

ちょうどあなたのすべての機能をあなたの機能の上に置きます。 私はこれが役立つことを願っています。私はちょうど昨日CCCのために同様の質問をしました。私はすべての行などのように1ヶ月のタイムテーブルをプリントアウトさせる必要がありました。

+0

1,2,3,4,5,6,7,8,9のように1つの番号を設定して対応する形式を印刷する – kotepillar

+0

このコードでは、すべての要素がそれぞれの行にあり、それぞれを空白の行で区切りますグループ。 – TigerhawkT3

+0

いいえ、それはできませんか? – Elodin

1

ここstring.format/zip_longestソリューションは

import itertools 
import math 

def crosses(n): 
    format = n * '{!r:4} ' 
    numbers = list(range(1, n+1)) 
    print(format.format(*numbers)) 
    format = len(numbers) * '{:4} ' 
    for f in itertools.zip_longest(
      *((min(mn, c)*'x' for mn, c in zip(
       itertools.repeat(math.ceil(math.sqrt(n))), 
       range(n, 0, -math.ceil(math.sqrt(n))))) 
       for n in numbers), 
      fillvalue=''): 
     print(format.format(*f)) 

crosses(10) 

版画です:それは、ホワイトスペースを管理するためのフォーマット文字列を使用しています

1  2  3  4  5  6  7  8  9  10  
x  xx xx xx xxx xxx xxx xxx xxx xxxx 
      x  xx xx xxx xxx xxx xxx xxxx 
            x  xx xxx xx  

。それとは別に、ZIPされたジェネレータによって管理されている数字の上に内部ループを持つ単純なループです。ヘッダーに使用される変更された書式文字列は、通常の右揃えのintの書式設定を回避するために!rを使用します。

+0

ありがとう、ポール、私は私の問題を明確に説明していませんでした – kotepillar

+0

@KillPillarああ、私は以前の列の幅の変更に気付かなかった。私は答えを更新しました。見てみましょう。私は間隔の違いが大丈夫だと思います。 –

関連する問題