2017-05-27 76 views
0
from sys import argv 

char = argv[1] 
n = int(argv [2])  

for i in range(0, n):   
     if i == 0 or n - 1: 
     for j in range(0, n): 
      char += "n" 
      print char * n 
     else: 
     for j in range(0, n): 
      if j == 0 or j = n-1: 
       char += "n" 
      else: 
    char += "/n" 
+0

什麼是你的問題的工作? – Ray

+0

請閱讀[問]。 – boardrider

回答

0

abccd's answer應該很好地工作。但是,如果你想知道爲什麼你的代碼是不工作:

  1. if條件if i == 0 or n - 1將成爲所有n>1如此。可能你想寫if i == 0 or i == n - 1

  2. 你並不需要在if i == 0 or i == n - 1內的for j...循環。執行print char * n n次打印char

  3. if j == 0 or j = n-1:再次是不正確的。 j = n-1部分完成作業而不是比較。

  4. 要打印if-else中的字符或空格,您可以使用sys.stdout.write

最終的代碼可能看起來像:

from sys import argv 
import sys 

char = argv[1] 
n = int(argv [2]) 

for i in range(0, n): 

    if i == 0 or i == n - 1: 
     print char * n 
    else: 
     for j in range(0, n): 
      if j == 0 or j == n-1: 
       sys.stdout.write(char) 
      else: 
       sys.stdout.write(' ') 
     sys.stdout.write("\n") 

而像這樣

$ python script.py q 5 
qqqqq 
q q 
q q 
q q 
qqqqq 
+0

這實際上現在正在工作,這是我打算在我的命令提示符屏幕上看到的。我只想問一下「sys.stdout.write」是做什麼的? –

+0

@AlgerAranda,我在這裏使用'sys.stdout.write'的原因是它只是將給定的字符打印到控制檯,而(與'print'相反)不會添加換行符。您可能想要查看詳細信息:https://stackoverflow.com/a/3263763/4045754 – yeniv

1

打印回字型我想你可以做這樣的事情:

char = 'n' 
n = 10 
# char = argv[1] 
# n = int(argv [2]) 

print n*char 
for i in range(n-2): 
    print (' '*(n-2)).center(n, char) 
print n*char 

# output: a 10 x 10 "square" of n 
nnnnnnnnnn 
n  n 
n  n 
n  n 
n  n 
n  n 
n  n 
n  n 
n  n 
nnnnnnnnnn