使用for循环生成字符串ASCII艺术 修复字符重复与索引报错问题
问题原因
- 现有代码中
middle行始终取name[0]也就是字符串的第一个字符重复拼接,因此输出全为P,没有遍历整个字符串的每个字符 - 循环逻辑冗余,循环仅为了获取和字符串长度相等的
i值,可直接通过len(name)获取不需要循环 - 之前出现
IndexError是因为你尝试用i作为下标取字符时,i的最大值超过了字符串的最大下标(字符串下标从0开始,最大下标为len(name)-1)
实现方案(无需手动添加换行符)
利用print()函数默认在输出结尾添加换行符的特性,分三次打印三行内容即可,无需手动拼接\n:
def art(name): name_upper = name.upper() # 上下边框通用 border = "+" + "-+" * len(name_upper) # 遍历每个字符拼接中间行 middle = "|" + "|".join(name_upper) + "|" # 三次打印自带换行 print(border) print(middle) print(border) art("Python")
运行输出结果:
+-+-+-+-+-+-+ |P|Y|T|H|O|N| +-+-+-+-+-+-+
内容的提问来源于stack exchange,提问作者zаѓатhᵾѕтѓ
相关产品推荐
相关产品推荐

