在印刷图像下方排列印刷文本?

Line up printed text underneath a printed image?

所以我有一个 CS class 的作业。它非常基础,但我对此 class 很感兴趣,我想我想使代码有点 "fancier"。我一直在谷歌搜索以查看如何使用下面的一些 ASCII 艺术和一些用户输入来打印结果。我已经完成了美术,输入部分也快准备好了!

我希望他们排好队。我想将用户输入的第一个名字限制为一定数量的字符,然后在特定位置打印第二个。我希望我输入的内容有意义!

对于上下文,赋值是:

Given a person's name, their age, the name of their dog and their dog’s age (in human years), display a picture, similar to the following, with the names displayed and the ages of both the person and the dog in “dog years” printed at the bottom of the picture.

所以我目前的代码是这样的......:[=​​12=]

#Assignment #1, I love ascii art so I hope you don't mind that I changed things up a little!
InputName = input("Please enter your name: ")
InputHumanAge = int(input("Please enter your age: "))

DogName = input("What is your dog's name? ")
InputDogAge = int(input("How old is your dog in human years? "))

HumanYears = InputHumanAge*7
DogYears = InputDogAge*7

print('      ________ ')
print('    /          \             ___       ___ ')
print('  /             \           |   \_____/   | ')
print(' / /  \______\__\ \        /  |\/     \/|  \ ')
print(' | |  O      O |  |        \_/ | /\ /\ | \_/ ')
print(' / |     __    /  |            |_\/ \/_| ')
print(' \  \ _______ /  /            /   \o/   \ ')
print('  |   __|  |__  |             \___/O\___/ ')
print('  '+ InputName +'                                '+ DogName +' ')
print('  '+ str(HumanYears) +'                       '+ str(DogYears) +' ')

我现在的问题是狗下面的文字没有按照我想要的方式排列。感谢任何帮助 <3 谢谢!

使用 .format() 为单词分配固定数量的 space。 Whosebug 拥有您使用 .format() 所需的所有信息,这将确保即使 'Inputname' 变长

,在单词之间给出相同数量的 space

尝试并使用

print("{0:28} {1:20}".format(InputName, DogName))

而不是

print('  '+ InputName +'                                '+ DogName +' ')

如果您使用的是 Python 3.6+,您可以这样使用 f-strings

print(f'  {InputName:<28s}{DogName}')
print(f'  {HumanYears:<28d}{DogYears}') 

而不是:

print('  '+ InputName +'                                '+ DogName +' ')
print('  '+ str(HumanYears) +'                       '+ str(DogYears) +' ')

将狗的属性向左或向右移动,分别减少或增加 f-strings 中的 28 值。

<28s 表示左对齐,右填充最多 28 个字符宽的空格。 <28d 同上,但对于整数。