2016-10-08 11 views
0

私は2つの入力、行数と歓声の数を入力として受け取るプログラムを書いています。行数は、ユーザーが印刷したい行の数であり、歓声の数は、1つの応援が「GO」という単語であり、2つの歓声が2つの「GO」です...という形式であり、 2つの隣接するGO内の「BUDDY」を含む。そして、新しい行はそれぞれ3つ前にインデントされなければなりません。ループを使ったパターンプログラムの問題

lines = input("Lines= ") 
cheers = input("Cheers= ") 
if cheers == 1: 
    i = 1 
    space = 0 
    S = "" 
    while i<=lines: 
     S=S+(" "*space)+"GO \n" 
     i += 1 
     space+=3 
    print S 
else: 
    n = 1 
    cheer1 = "GO BUDDY " 
    cheer2 = "GO" 
    space = 0 
    while n<= cheers: 
     print (" "*space)+(cheer1*cheers)+cheer2 
     space+=3 
     n += 1 

しかし、これに伴う問題は、それが歓声の数でGO者の権利数をプリントアウトしていないということです。そして、これは私が作ってみたプログラムです。この問題を解決するためにコードを修正するにはどうすればよいですか?これは私が取得したい出力形式です:

This is the format of the ouput I want to get

答えて

1
def greet(lines, cheers): 
    i = 0 
    line_str = "" 
    while i < cheers: # Build the line string 
     i += 1 
     line_str += "GO" if i == cheers else "GO BUDDY " 

    i = 0 
    while i < lines: #Print each line 
     print(" "*(i*3) + line_str) 
     i += 1 

greet(2,1) 
greet(4,3) 
greet(2,4) 
+0

これは私のプログラムと全く同じ出力です。私は「歓声」に与えられた数と同じくらい多くの "GO"単語を1行に...必要とします。行= 3、歓声= 3の出力は "GO BUDDY GO BUDDY GO"でなければなりません。 "GO"という3つの単語があります。 – HogRider123

+0

あなたは今それを試すことができます@ HogRider123 – WayToDoor

1

多くの場合、Pythonであなたが

lines = int(input('Lines= ')) 
cheers = int(input('Cheers= ')) 

line = ' BUDDY '.join(['GO']*cheers) 
for i in range(cheers): 
    print(' '*(i*3) + line) 
+0

はい、あなたは本当に、私は具体的にループを使用してコードを書くように頼まれた。 – HogRider123

1

はこれを試してみてください任意のループを必要としません。

def greet(lines, cheers): 
    for i in range (lines): 
     output = (" ") * i + "Go" 

     for j in range (cheers): 
      if cheers == 1: 
       print output 
       break 
      output += "Budddy Go" 
     print output 

これが役に立ちます。

+0

私はそれを動作させることができません:greet(2,1)出力 – WayToDoor

+0

応援があれば入れてください== 1回の歓声のループの中にブロックしてください。コード – Harv

+0

を更新してコードを更新します。これを試してみてください – Harv