【问题标题】:Printing a blank space beforehand if a number is 1 digit如果数字是 1 位,则预先打印一个空格
【发布时间】:2019-02-10 20:19:44
【问题描述】:

所以我有一个根据用户输入而变化的数字列表。例如,假设我的列表是[26, 13, 51, 46, 9, 15]。我使用print(" ".join(str(e) for e in mylist)) 打印它们,不带逗号和括号,中间有空格。我想要做的是在一个数字之前打印 2 个空格,如果它是一位数/低于 10。所以我想要的输出是26 13 51 46 9 15。我该怎么做?

【问题讨论】:

  • f"{e:2d}" 替换 str(e)(如果在 Python 上比 3.6 更早:"{:2d}".format(e)
  • @OndrejK。这真的很好,但我是一个复杂的人,我不喜欢花括号的样子! :) 非常感谢您的建议!
  • 喜不喜欢,未来是卷曲的...... ;)

标签: python python-3.x


【解决方案1】:

你可以使用 rjust:

'hi'.rjust(3)
' hi'

print(' '.join(str(e).rjust(2) for e in mylist))

【讨论】:

  • 正是我想要的。简短而简单。非常感谢!
【解决方案2】:

您可以使用字符串格式:

print(" ".join("{:2d}".format(e) for e in mylist))

另外,由于print函数默认的sep=' '" ".join可以被解包替换:

print(*("{:2d}".format(e) for e in mylist))

【讨论】:

  • 这很好用!我需要的是类似@Tdaw 的解决方案,但你的解决方案是一个不错的选择。非常感谢!
【解决方案3】:

这就是你要找的吗?

mylist = [26, 13, 51, 46, 9, 15]
for number in mylist:
    if len(str(number)) == 1:
        print(f" {number}")
    else: print(str(number))

【讨论】:

  • 是的,这就是我需要的!但愚蠢的我不喜欢放大括号,所以我使用的解决方案是@Tdaw 的建议。不过这个也不错!非常感谢。 :)
猜你喜欢
  • 1970-01-01
  • 2022-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
相关资源
最近更新 更多