Python:从用户输入打印空心方块

时间:2017-05-27 05:11:56

标签: python

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" 

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

abccd's answer应该运作良好。但是,如果您想知道为什么您的代码不起作用:

  1. if条件if i == 0 or n - 1对所有n>1都适用。可能你想写if i == 0 or i == n - 1

  2. 您并不需要for j...中的if i == 0 or i == n - 1循环。执行print char * n打印char n次。

  3. if j == 0 or j = n-1:再次不正确。 j = n-1部分执行分配而非比较。

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

  5. 最终代码可能如下:

    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