我希望代码在大于23或小于0时不接受输入。 它确实拒绝负值,但仍然大于23。
height=int(input("select height: "))
while height<0 and height>23:
print("please give input between 1 and 22")
for i in range(height):
print(" "*(height-i)+"#"*(i+1))
我在Google上搜索了一些内容,并尝试通过反复试验来理解,但我做不到。
for i in range(height):
print(" "*(height-i)+"#"*(i+1))
答案 0 :(得分:1)
当前代码检查height
是否同时 小于0和大于23。相反,请尝试:
while height < 0 or height > 23:
height = int(input("input height: "))#using input as well, to get new working value
关于最后几行的工作方式:它们创建高度和宽度相等的ASCII金字塔“#”。
for i in range(height)
仅代表有多少行。" "*(height-i)
:例如,如果它是6高度金字塔的第一行,将打印5个空格;如果是第二行,将打印4个空格。乘法只会打印该字符 x 次。"#"*(i+1)
。就像上面一样,但是后面跟着空格,反之。答案 1 :(得分:0)
while height<0 and height>23:
print("please give input between 1 and 22")
您应该使用if而不是while
for i in range(height):
print(" "*(height-i)+"#"*(i+1))
第一行描述了循环将执行多少次 其次,每行将打印该字符串多少次。
答案 2 :(得分:0)
尝试
while height <= 0 or height >= 23:
print("please give input between 1 and 22")
height = int(input("select height: "))
当值为true且数字同时小于0且不能大于23时有效,请使用'or'not'and'