【问题标题】:Write a program to prompt for square height h and print the even numbers in a square shape?编写程序提示输入正方形高度 h 并将偶数打印成正方形?
【发布时间】:2017-12-17 21:41:44
【问题描述】:

我不知道该怎么做。我知道如何通过提示输入行和列来打印正方形,但不太明白如何只提示输入高度并打印偶数数组。

col = eval(input("Enter the number of columns: "))

row = eval(input("Enter the number of rows: "))

for j in range(row):
   for i in range(col):
   print("*", end=" ")
print()

这就是我将如何设置打印一个正方形的星号,但我将如何做到这一点,同时只提示输入高度并打印出偶数?例如,如果我的身高是“3”,它应该打印出一个如下所示的数组:

0 2 4
6 8 10
12 14 16 

【问题讨论】:

  • eval 而不是int?生活又快又危险?

标签: python arrays


【解决方案1】:

iterator 的数字上使用next()

h = 3
ns = iter(range(0,h**2*2,2))
for r in range(h):
    for c in range(h):
        print(next(ns), end='\t')
    print()

给出:

0   2   4   
6   8   10  
12  14  16

使用slicingstr.join

h = 4
ns = list(range(0,h**2*2,2))
for r in range(0,len(ns),h):
    print(" ".join(str(c) + "\t" for c in ns[r:r+h]))

给出:

0    2   4   6  
8    10  12  14 
16   18  20  22 
24   26  28  30 

【讨论】:

    【解决方案2】:

    这是一种通过制作嵌套列表并使用格式化函数将其打印出来的方法。可以将列表推导替换为大型列表的生成推导。

    def print_even_matrix(h):
        l = [[2*(i + j) for j in range(h)] for i in range(0, h**2, h)]
        listtab = lambda x: '\t'.join(map(str, x))
        print '\n'.join(map(listtab, l))
    
    >>> print_even_matrix(3)
    0       2       4
    6       8       10
    12      14      16
    >>> print_even_matrix(4)
    0       2       4       6
    8       10      12      14
    16      18      20      22
    24      26      28      30
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      • 2020-07-29
      • 1970-01-01
      相关资源
      最近更新 更多