2017-05-27 77 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