Python右对齐阶梯打印时顶部空格失效的问题求助
问题分析与解决
你的右对齐阶梯代码逻辑本身没问题,但实际运行出现异常,大概率是代码编写时的小失误导致的。我们先看正确的实现方式,再对比你的代码找出问题。
正确的右对齐阶梯实现
可以简化代码,去掉多余的分支判断,直接通过循环控制空格和#的数量:
height = int(input("enter height: ")) if height < 1: print("invalid height") else: # 从1到height遍历,每次i代表当前行的#数量 for i in range(1, height + 1): # 前置空格数 = 总高度 - 当前#数量 print(" " * (height - i) + "#" * i)
运行示例(height=5):
enter height: 5 # ## ### #### #####
你的代码问题排查
你的代码逻辑是对的,但实际运行第一行缺失空格,可能是以下原因之一:
- 缩进错误:如果
print((" " * space) + ("#" * count))这一行没有正确缩进在for循环内,会导致循环外先执行一次错误的输出,再进入循环。 - 额外的print语句:可能在
else块的for循环前不小心添加了print("#"),导致第一行直接输出#。 - 变量初始化失误:比如误将
space初始值写成了0而非height-1,不过从你给出的代码看这一点不存在。
把你的代码修正后(确保缩进正确,无额外输出),运行结果应该和预期一致:
count = 1 height = int(input("enter height: ")) space = height - 1 if height < count: print("invalid height") elif height == count: print("#") else: for x in range(height): print((" " * space) + ("#" * count)) space -= 1 count += 1
这段代码在无缩进错误的情况下,输入5会输出正确的右对齐阶梯。
内容的提问来源于stack exchange,提问作者Scorch
相关产品推荐
相关产品推荐

