2017-11-26 7 views
-2
def parallelogram(a,b): 
    for i in range(a,0,-1): 
     for j in range (i,0,-1): 
      print("*",end='') 
      for j in range(b,0,-1): 
       print("+",end='') 
      for k in range(a-i,0,-1): 
       print("*",end='') 

ı python.ı에서 문자가있는 평행 사변형을 그릴 수있는 함수를 작성하고 싶습니다. 코드를 수정할 수 있습니까? 출력해야는 다음과 같습니다Python에서 문자로 평행 사변형을 그리는 방법은 무엇입니까?

****++++* 
***++++** 
**++++*** 
*++++**** 
+0

무엇이 도움이 필요하십니까? 코드가 있다면, 원하는 것은 무엇을하지 않습니까? 나쁜 결과물을 얻나요? 오류? 실제로 무엇을 요구하는지 설명해야합니다. – Carcigenicate

+0

ı 코드가 내게 그 output.my 코드가 맞지 않기를 바란다. ı couldnt는이 출력을 얻기 위해 루프를 고칠 수있는 방법을 찾는다. –

+0

이 코드는 나에게이 라인 만 준다. ****** +++++ ***** +++++ ***** +++ ++ ***** +++++ ***** +++++ ***** +++++ ***** –

답변

0

ASCII 아트로 당신이 더 먼저 문제를 분석 할 수 있습니다. 높이가 a이고 너비가 w 인 평행 사변형을 그리려면 먼저 첫 번째, 두 번째, i 번째 줄 등이 어떻게 보이는지 생각해야합니다.

prallellogram의 첫 번째 라인은 별표 (*) 다음 b 장점이 더 (+) 다음 a 별표 (*)를 포함한다. 우리는 이것을 다음과 같이 쓸 수 있습니다 :

line1 = '*' * a + '+' * b + '*' 

물론 이것은 전체 문제를 해결하지 못합니다. 두 번째 줄은 첫 번째 줄과 거의 동일합니다. 단, 왼쪽에는 별표 1 개가 적고 오른쪽에는 한 개의 별표가 더 적습니다. 따라서 :

line2 = '*' * (a-1) + '+' * b + '*' * 2 

모든 줄에서는 왼쪽에 별표 하나가 제거되고 오른쪽에 하나씩 추가됩니다. 우리는이 비트를 간소화하고로 쓸 수

for i in range(1, a+1): 
    linei = '*' * (a+1-i) + '+' * b + '*' * i 
    print(linei) 

다음 평행 사변형이 a 같은 선이

linei = '*' * (a+1-i) + '+' * b + '*' * i 

때문에, 우리는 1a+1에에서 i 범위 수 : 그래서 linei는 것을 의미한다 :

def parallelogram(a,b): 
    for i in range(1, a+1): 
     print('*' * (a+1-i) + '+' * b + '*' * i) 
0

시작하려면 end = ''로 시작하면됩니다. 같은 줄에 인쇄하십시오. 하지만 코드의 어느 지점에서 다음 줄에 인쇄하려면 print()를 추가해야합니다. 거기서 시작해서 개선이 필요한 부분을 찾아내는 지보십시오.