Python新手求教:如何修改三角形打印函数以循环输出指定字符序列
修改金字塔字符循环的解决方案
首先,先帮你梳理下原代码里的两个小问题:
- 函数
maketriangle的参数num完全被内部的input覆盖了,没发挥作用; - 最后调用
print(maketriangle(num))会额外输出None,因为函数没有返回值,直接调用函数就好。
接下来解决核心需求:让字符按?!#$循环显示。我们可以这样做:
- 先定义要循环的字符序列,比如
chars = '?!#$'; - 在内层循环中,利用取模运算(
%)来循环获取字符——因为取模会让索引在字符序列的长度范围内循环,比如j % 4会得到0、1、2、3、0、1...这样的循环索引; - 替换掉原来打印
"*"的逻辑,改成打印对应索引的字符。
修改后的完整代码如下:
def maketriangle(number): # 定义循环的字符序列 chars = '?!#$' for i in range(0, number): for j in range(0, i+1): # 用取模实现字符循环,j模字符长度得到循环索引 print(chars[j % len(chars)], end='') # 直接print()即可换行,避免原代码的多余空行 print() # 外部获取输入,让函数更通用(也可以直接传入数字,比如maketriangle(4)) num_input = int(input("Enter a number: ")) maketriangle(num_input)
测试输入4时,输出就是你预期的效果:
?
?!
?!#
?!#$
如果输入5的话,第五行会是?!#$?,完美实现循环效果~
内容的提问来源于stack exchange,提问作者So Heum Hwang
相关产品推荐
相关产品推荐

