我是Python的新手,正在尝试使用print和for循环来打印如下模式,其中块的宽度取决于我要输入的字符,即块和周围行的宽度随着字符串的长度而动态增加,例如ABCDEFGHI..:
┏━━━━━━━━━━┓
┃ ABCDE ┃
┗━━━━━━━━━━┛
我正在尝试迭代字符串的字符,比如-
name = "abcdefghi"
for i in name:
print("━",end="")
print()
for j in range(1):
print("┃"+" "*(len(name)-1)+"┃")
for k in name:
print("━",end="")
这给了我一个类似的输出
━━━━━━━━━━━━
┃ ┃
━━━━━━━━━━━━
- 如何使用多个循环来结束行?(使图案看起来不像一个开放式盒子(
- 有没有什么方法可以启动第二个循环索引-1而不是行
━━━
模式
需要关于尝试什么的建议吗?
样本中有类似'┏'
的字符,因此在设计逻辑时需要考虑它们:
name = "abcdefghi"
width = len(name) + 4
print('┏' + "━"*width + "┓")
print('┃' + name.center(width) + '┃')
print('┗' + "━"*width + "┛")
┏━━━━━━━━━━━━━┓┃abcdefghi┃┗━━━━━━━━━━━━━┛
您可以先构建完整的字符串,然后打印
name = "abcdefghi"
hh = (len(name)+4)*"━" # horizontal line, using "string multiplication"
box = f"┏{hh}┓n┃ {name} ┃n┗{hh}┛" # using f-string substitution
print(box)
┏━━━━━━━━━━━━━┓
┃ abcdefghi ┃
┗━━━━━━━━━━━━━┛
如果要将名称写入框中,则不需要for
循环。您可以像现有代码使用" "*(len(name)-1)
一样,将"━" * len(name)
用于可变长度字符串
name = "abcdefghi"
print("┏━" + "━" * len(name) + "━┓")
print("┃ " + name + " ┃")
print("┗━" + "━" * len(name) + "━┛")
给予:
┏━━━━━━━━━━━┓
┃ abcdefghi ┃
┗━━━━━━━━━━━┛
对于这个问题中稍宽的框,只在边缘硬编码一些稍长的字符串可能是最简单的:
print("┏━━" + "━" * len(name) + "━━┓")
print("┃ " + name + " ┃")
print("┗━━" + "━" * len(name) + "━━┛")
给予:
┏━━━━━━━━━━━━━┓
┃ abcdefghi ┃
┗━━━━━━━━━━━━━┛