仅接受范围内的输入

时间:2019-10-03 09:15:55

标签: python

我希望代码在大于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))

3 个答案:

答案 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'