Python打印字符三角形代码的循环逻辑与字符串拼接疑问
Python字符三角形打印问题解答
问题1:第一段代码中space = space + value + ' '语句的作用是什么?
你的space变量初始为空字符串,这行代码的作用是每次将用户输入的字符追加到space末尾,同时补一个空格,满足你要求的「每个字符之间添加空格」的输出规则。比如第一次执行后space为* (假设输入字符为*),第二次执行后为* * ,以此类推,每执行一次就多一个带空格的字符。
问题2:第一段代码如果去掉内层遍历triangle_char的for循环,直接写print(i * triangle_char),仅会输出高度为2的三角形,原因是什么?
首先你要注意:第一段代码的外层循环变量i从头到尾没有被实际使用,原本的输出逻辑是靠外层循环跑triangle_height次、每次给space累加一次字符+空格实现的。如果改成直接打印i * triangle_char会出现两个问题:
range(0, triangle_height)生成的序列从0开始,比如你输入高度为3,i的取值是0、1、2,0 * 任意字符串都会得到空值,第一行空输出很容易被你忽略,误以为只输出了高度为2的三角形- 这种写法不会在字符之间加空格,也不符合你的需求
另外补充:你写的内层遍历triangle_char的循环属于冗余代码,因为triangle_char是单个字符,每次只会循环一次,完全可以直接用triangle_char变量代替遍历得到的value。
问题3:第二段代码中的for value in triangle_char语句,遍历单个字符为什么会返回value值?
Python中字符串本身就是可迭代对象,不管长度是多少,遍历操作都会依次返回每个位置的字符。你输入的triangle_char是长度为1的字符串,所以遍历只会执行一次,返回的value就是你输入的单个字符本身。
内容的提问来源于stack exchange,提问作者Vivian Nong
相关产品推荐
相关产品推荐

