【问题标题】:Need help in printing vertically在垂直打印方面需要帮助
【发布时间】:2021-01-29 03:46:02
【问题描述】:

任务是输出如下内容:

Progress   Trailing   Retriever   Excluded
      *                  *              *                  
                                        *
  • 这是一个图表,其中有 4 个“标题”,星号代表频率:
  • 我想要一种方法来分配一个数字,例如“进度”,它会在其下方和其余标题中打印 5 个星号:

这是我的尝试:

输入:

print("Progress")
x = 0
while x<5:
    print('   *')
    x+=1

输出:

Progress
   *
   *
   *
   *
   *

输入:

#for next heading 
print("Trailing")
x = 0
while x<2:
    print('   *')
    x+=1

输出:

Trailing
   *
   *
  • 有没有一种方法可以垂直显示它们?就像预期的输出一样,或者有另一种方法可以做到这一点,即为每个标题分配一个数字(用于星号的数量)

提前致谢,我一直在努力寻找一种方法。

【问题讨论】:

  • 查看print 函数的end 参数。
  • 这能回答你的问题吗? multiple prints on the same line in Python
  • 这能回答你的问题吗? How to print without newline or space?
  • 所以你基本上想一次打印一列?有很多方法可以做到这一点,但它因终端而异,因此您需要找到一个库来允许您像这样移动终端光标。我认为最好逐行打印出来以保持简单。即print('Progress Trailing Retriever Excluded')
  • 是的,一次一列,你能逐行解释吗?我以前这样做过,问题是它会在同一行上打印 4 个星号,但是如果我不想要特定行上的星号怎么办?还是某个数字?

标签: python printing vertical-alignment


【解决方案1】:

改变

print("Trailing")

print("Trailing", end='')

而且您不会在字符串末尾打印默认的\n 字符。

【讨论】:

  • 当我从进度和尾随加入代码并在“尾随”之后添加结尾时,它没有正确对齐,而是打印在“进度”下方。
【解决方案2】:

有多种方法可以在终端中移动光标以按照您可能想到的方式进行操作,但最简单的方法是一次打印一行(伪代码):

print('Progress   Trailing   Retriever   Excluded')
for entry in entries:
    print('  *   ' if entry.progress  else '       ', end='')
    print('  *   ' if entry.trailing  else '       ', end='')
    print('  *   ' if entry.retriever else '       ', end='')
    print('  *   ' if entry.excluded  else '       ') # No end here to add newline

【讨论】:

  • 抱歉,您能否提供更多信息,我收到错误消息,因为在运行代码时未定义“条目”。谢谢你的帮助,我猜它是一个入门类?还是?
  • @the_R 我不确定你是如何计算频率的,所以我只使用了这个 for 循环。将其替换为迭代您拥有的频率所需的内容。将entry.progress 替换为i &lt; progress_freq
  • 对不起,我有点困惑,请您提供更多代码,再次感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 2014-02-06
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多