2012-09-15 3 views
-1

파이썬 3.2 프로그램이 n x n 패턴을 인쇄 할 수 있도록 n> = 3 값을 입력하라는 메시지를 표시해야합니다.파이썬에서 X 패턴 3.2

예, N = 4 ==> 패턴 :

x..x 
.xx. 
.xx. 
x..x 

다른 예, N = 5 ==> 패턴 :

x...x 
.x.x. 
..x.. 
.x.x. 
x...x 

공지 그 후에 X 얻을 각각 서로 가까이 열. 중간 행 이후에는 서로 더 멀리 떨어져 결국 마침내 끝납니다.

이 문제를 도와주세요. 분기 및 루핑을 사용해야한다는 것을 알고 있지만 패턴 뒤에있는 논리를 파악할 수는 없습니다.

나는 N 패턴에 의해를 출력 관리했지만 그것은 다음과 같습니다
예, N = 4 ==> 패턴 :

xx.. 
xx.. 
xx.. 
xx.. 

내 코드는 다음과 같습니다

pattern_size = int(input("Please enter pattern size:")) 
    while pattern_size < 3: 
    print("Pattern size should be at least 3") 
    pattern_size = int(input("Please enter pattern size:")) 

    for level in range(1,pattern_size+1): 
     for num in range(2): 
      print("x", end="") 

     num_dot = pattern_size - 2 
     for num in range(num_dot): 
      print(".", end="") 

     print() 

누군가가 "."인쇄 방법에 대해 조언 해 줄 수 있습니까? 와 "x"는 교대로?

+0

질문을 누군가가 질문을 할당에 관한 표시하고 그들이 갇혀있는 위치에 대한 자세한 컨텍스트를 제공하기 위해 오신 것을 환영합니다 이상입니다 @Wilduck -하지만 여기에 묻는다면, 완전한 답을 얻을 수있는 아주 좋은 기회입니다. 그것을 가져올 시간이 있다면 좋은 메타 주제가 될 것입니다. –

+0

@TimPost 설명해 주셔서 감사합니다. 나는 메타에 대한 질문을 제기했다 : http://meta.stackexchange.com/questions/147179/with-the-homework-tag-removal-how-do-we-help-new-users-ask-better-questions . 기회를 얻으면 그 문제에 대한 당신의 의견을 듣고 싶습니다. – Wilduck

답변

0

다음은 python2.7에서 작동하는 코드입니다. 트릭은 항상 왼쪽으로 이동하는 "x"중 하나이며 다른 하나는 항상 오른쪽으로 이동합니다. 여기

def pattern_writer(pattern_size): 
    first_x = 0 
    last_x = pattern_size - 1 
    while first_x < pattern_size and last_x > -1: 
     for t in range(pattern_size): 
      if t == first_x or t == last_x: 
       print "x", 
      else: 
       print ".", 
     print "\n" 
     first_x += 1 
     last_x -= 1 

이 목록을 사용하여 다른 솔루션입니다 :

def pattern_writer2(pattern_size): 
    for t in range(pattern_size): 
     pattern = list("." * pattern_size) 
     pattern[t] = "x" 
     pattern[-(t+1)] = "x" 
     print "".join(pattern) 
+0

감사! 이제 저는 그 패턴의 논리를 이해합니다. –

+0

@ SalihanZaol-kefli 답변이 도움이된다고 생각되면 답변을 수락하십시오. –