2017-11-13 9 views
-2

マイassingment各レベルでネストされた三角形は、Python

に前のレベルのための完全な三角形は、余分な外側の三角形に配置されます。ユーザは、使用される2つの文字と、最も奥行きのある三角形の幅とを入力するように要求されなければならない。負の入力のテストに加えて、関数は与えられた数が奇数かどうかをテストし、そうでない場合は適切なメッセージを表示する必要があります。

3つの三角形を印刷する必要がありますが、それぞれにはその他が含まれています。 2つの異なる文字(* - など)で印刷する必要があり、ユーザーは最も内側の三角形の長さを指定しなければならず、奇数でなければなりません。たとえば、

Example output for 5 value

OK]をクリックして、すべての三角形が辞書にあるべき

、私は私の方法を説明しましょう。

tri1 = {1:"*****", 2:"***", 3:"*"} 
tri2 = {1:"..........", ...} 

ユーザー入力の処理方法がわかりませんでしたか?

5入力した場合、

長 - 5部、高さ3ユニット

長さ - 11部、高さ6ユニット

長さ - 23部、高さ12ユニット。

どうすればわかりますか?論理は何ですか?

[OK]をクリックします。入れ子にされたループを持つ別の三角形の中に入れ墨を置く必要があることを理解しています。単純に別の辞書に反復することはできますが、2番目の文字の位置を確認する必要があります。

ありがとうございます。

私のコード、

 
    ch1, ch2 = input("Please enter the characters you want to use: ")

num = int(input("Please specify the length of innermost triangle(only odd number): ")) 

if (num % 2 == 0) or (num < 3): 
    print("Number can not be even, less then 3 and negative") 

num2 = (2 * num) + 1 
num3 = (2 * num2) +1 
tri1 = {} 
tri2 = {} 
tri3 = {} 

for i in range(3): 
    tri1[i] = ch1*num 
    num -= 2 


check = 1 
cont = 0 
var = 1 
for ii in range(6): 
    tri2[ii] = ch2*check 
    check += 2 
    if (ii >= 3): 
    tri2[ii] = ch2*var + tri1[cont] + ch2*var 
    cont += 1 
    var += 2 

for i in tri1: 
    print('{:^5}'.format(tri1[i])) 

for i in tri2: 
    print('{:^11}'.format(tri2[i])) 

+0

1.これはdictionnaryではありません。あなたの試したことの多くを提供する必要があります。私は変数を割り当てることが実際に試みているとは思わない。 – scharette

+0

https://hastebin.com/dadewequci.sql – hex4d0r

+0

@scharette私のコードを追加しました – hex4d0r

答えて

0

辞書は単純な関数を使用して作成することができます。

def create_tri_dict(tri_chars, tri_height): 
    level_str = {0:tri_chars[0]} 

    for i in range(1,tri_height): 
     level_length = i *2 +1 
     tri_char = tri_chars[i%2] 
     level_str[i] = level_str[i-1] + '\n' + tri_char * level_length 
    return level_str 

を次に、あなたのプログラムのメインロジックは次のようになります。

tri_chars = input('Input triangle characters: ') 
tri_length = int(input('Input triangle base length: ')) 
tri_height = (tri_length + 1)//2 
if tri_length %2 == 0: 
    raise Exception('Triangle base length not odd') 
tri_dict = create_tri_dict(tri_chars, tri_length) 

最後の3つの(?)三角形を印刷する:

print(tri_dict[tri_height-2]) 
print(tri_dict[tri_height-1]) 
print(tri_dict[tri_height]) 
+0

それは私がしたいとは思っていませんでしたが、お試しいただきありがとうございます。私はそれを解決した。 – hex4d0r