python - 如何让一个大字符串(又名 str 图片)一个接一个打印?
问题描述
+___ +___ +___
|1 / |2 / |3 /
|__\ |__\ |__\
| | |
我试图让标志一个接一个地出现,我能想到的唯一方法是将图片的每一部分分配给各种变量(这意味着添加top = '+___'
等等)。但是如果它确实适用于较小的图片,应该我用更大的?创建一个数组并遍历它在时间和内存计划中也不是一个好的解决方案。我试图将所有内容附加在一个字符串中,但使用end=''
它并不能按照我需要的方式塑造形式(仅从新行开始)。我会很感激你的建议,在此先感谢。
n = int(input())
flag = """
+___
| /
|__\
|
"""
for i in range(1, n + 1):
print(flag[:9] + str(i) + flag[10:])
PS-这是我找到的一个练习,但不知道如何有效地解决。
解决方案
我不明白为什么迭代实际上会成为问题,除非您打印数百万个标志。我认为这将是最快的。无论如何,优化总是你最不想做的事情,你首先需要一个有效的算法。
我不会真正解决这个练习,而是一些事情。您可以先一行一行地使用强大的星号运算符:
print("ORA " * n)
print("MUDA " * n)
由于所有字符的间距相同,您可以看到它打印得很好。重要的是要检查所有行是否具有相同数量的字符,或者对其进行填充(例如,在行尾插入空格)。
现在,关于更改字母,您需要更改一些算法:
print("ORA " * n)
for i in range(n):
print("HELLO ".replace('E', i))
print(i)
print("MUDA " * n)
如果你担心你的老师会不喜欢这种编码风格,首先,这对你很好,然后你确实可以使用数组,有点像这样:
# Notice that all my line have the same length
flag = """
ORA
MUDA
"""
f_lines = flag.split("\n")
for l in f_lines:
print(l * n)
考虑到这一点,我认为您拥有解决锻炼所需的所有关键。
推荐阅读
- c# - 将 IIS 与 .NET Core 2.2 Web API 一起使用时自动生成的 web.config 中的硬编码路径
- javascript - 在jsfiddle中,运行时错误消息“error”:“key missing:title”是什么意思?
- reactjs - 尽管修改了临时对象数组而不是状态,但错误“在调度之间检测到状态突变”
- python - 在 spyder 中在线运行 Dropbox 中存在的 python 脚本(不在桌面中)
- python-3.x - 我是 Python 的首选学生,并且有一个关于链表的问题
- azure - Istio 侧车外置存储安装问题
- php - 从 3 个表中获取与具有 haMany 关系的一个表相关的数据
- python - 重新打包一个原来通过pip安装的修改库
- c# - 当文本框有焦点时,有没有办法让一些代码工作?
- python - Pandas:添加显示前一天、一周、一个月的值的列