【问题标题】:How can I print this table vertical?如何垂直打印此表?
【发布时间】:2022-01-07 06:00:43
【问题描述】:
x = 0
y = 0
z = 0

sign = "*"

x = int(input("Enter a number : "))
y = int(input("Enter a number : "))
z = int(input("Enter a number : "))

print(f'{"x":2}{"y":3}{"z":4}')
print(f'{x*sign}{y*sign}{z*sign}')

我希望这样打印,但我怎样才能垂直打印呢?

x  y  z 
*  *  *
*  *

【问题讨论】:

  • 您必须使用 for-loop 来分别打印每一行。在每一行中,您必须为每个变量添加单个 "*"" "(空格)。或者首先创建带有空格的二维数组(行列表)并将* 放在正确的位置,最后打印所有行。

标签: python python-3.x visual-studio


【解决方案1】:

您可以使用itertools.zip_longest 和一个空格作为填充值,以及一个for 循环:

from itertools import zip_longest

sign = "*"

x = int(input("Enter a number : "))
y = int(input("Enter a number : "))
z = int(input("Enter a number : "))

print(f'{"x":2}{"y":3}{"z":4}')
for a,b,c in zip_longest(x*sign, y*sign, z*sign, fillvalue=' '):
    print(f'{a:2}{b:3}{c:4}')

示例输出:

x y  z   
* *  *   
* *  *   
*    *   
*    *   
*        

另类

如果您没有具有不同空格的特定格式,您甚至可以摆脱(显式)循环:

x,y,z = 5,2,4
print('x y z')
print('\n'.join(map(' '.join, zip_longest(x*sign, y*sign, z*sign, fillvalue=' '))))

输出:

x y z
* * *
* * *
*   *
*   *
*    

【讨论】:

    【解决方案2】:

    您必须单独打印每一行并检查x,y,z 以打印单个sign 或空格" "

    您可以从x, y, z 获取最大值并使用range(max_val) 运行for-loop 并将此值与x, y, z 进行比较,以检查它是否必须显示sign 或空格。

    sign = "*"
    
    #x = int(input("Enter a number : "))
    #y = int(input("Enter a number : "))
    #z = int(input("Enter a number : "))
    x = 5
    y = 2
    z = 4
    
    print(f'{"x":2}{"y":3}{"z":4}')
    
    maxval = max([x, y, z])
    
    for n in range(maxval):
        sign_x = sign if n < x else " "
        sign_y = sign if n < y else " "
        sign_z = sign if n < z else " "
        print(f'{sign_x:2}{sign_y:3}{sign_z:4}')
    

    【讨论】:

      猜你喜欢
      • 2013-11-24
      • 2019-11-14
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 2014-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多