1

这是我写的代码

a = "*" * 2 
b = "*" * 4
c = "*" * 1

print("a","b","c")

for each in a:
  print('{:>5}'.format(each))

for each in b:
  print('{:>10}'.format(each))

for each in c:
  print('{:>15}'.format(each))

我得到的输出是这样的

a  b  c
*
*
   *
   *
   *
   *
       *

但是我想要得到的输出是这样的

a  b  c
*  *  *
*  *
   *
   *

关于如何获得我想要的输出的任何想法?感谢任何可能的帮助

4

5 回答 5

4

使用一个循环进行迭代,a,b,c以便能够逐行打印:

a = "*" * 2
b = "*" * 4
c = "*" * 1

items = [list(x) for x in (a, b, c)]
print("a", "b", "c")

# repeat until a,b,c are empty.
while any(items):
    for item in items:
        print(item.pop() if item else ' ', end=' ')
    print("")

出去:

a b c
* * * 
* *   
  *   
  *   
于 2020-11-27T13:49:16.653 回答
3

你可以试试这个:

a = "*" * 2
b = "*" * 4
c = "*" * 1

texts = [a, b, c]
rows = max(len(text) for text in texts)

print(f"a b c")
for i in range(rows):
    cell_a = a[i] if len(a) > i else " "
    cell_b = b[i] if len(b) > i else " "
    cell_c = c[i] if len(c) > i else " "

    print(f"{cell_a} {cell_b} {cell_c}")

您可以为打印应用更多格式,但它应该已经按照您想要的方式打印内容。

于 2020-11-27T13:49:38.820 回答
3

我认为你应该在一个循环中组合'a,b,c':

a = "*" * 2 
b = "*" * 4
c = "*" * 1

print("a","b","c")

for line in range(max(len(a), len(b), len(c))):
    row = ""
    row += "* " if line < len(a) else "  "
    row += "* " if line < len(b) else "  "
    row += "* " if line < len(c) else "  "
    print(row)
于 2020-11-27T13:50:54.963 回答
3

我会建议一种不同的算法方法。对于每个名称 ( 'a', 'b', 'c'),计算您正在打印的当前行中是否需要 a '*'。您的任务的通用功能:

def print_sym(names, reps, symbol):
    print(*names)
    for i in range(max(reps)):  # iterate over output rows
        row_str = ""
        for rep in reps:  # iterate over output columns
            row_str += symbol if i < rep else " "
            row_str += " "
        print(row_str)

print_sym(['a', 'b', 'c'], [2, 4, 1], '*') 
a b c
* * * 
* *   
  *   
  *   
于 2020-11-27T13:51:49.573 回答
2

试试这个:

a = "*" * 2 
b = "*" * 4
c = "*" * 1

print("a","b","c")
max_length=len(max(a,b,c))

a+=" "*(max_length-len(a))
b+=" "*(max_length-len(b))
c+=" "*(max_length-len(c))

for i in range(0,max_length):
    print(a[i],b[i],c[i])

输出:

a b c
* * *
* *  
  *  
  *
于 2020-11-27T14:34:02.640 回答