【问题标题】:Why my conditions dont work inside for loop?为什么我的条件在 for 循环中不起作用?
【发布时间】:2020-11-07 18:55:24
【问题描述】:

任务是从用户那里取出星星的数量,然后将其打印为反向金字塔。

数字必须是奇数,从 0 到 11。它总是打印 11 颗星并忽略任何给定的条件

stars = int(input("Put the odd number of stars\n"))
space = 0
for stars in range(11, 0, -2):
    if stars > 11 and stars < 1 and (stars % 2 != 0):
        print("wrong number")
print(space * " " + stars * '*')
space = space + 1
print("")

【问题讨论】:

  • 星数如何同时大于11和小于1?
  • 您将用户的输入替换为来自range() 的值。
  • 如果它小于 1 它应该打印“错误的数字”
  • 已经保证是in range(11, 0,为什么还要查呢?
  • 但是你有and,这意味着它必须同时满足这两个条件。

标签: python loops


【解决方案1】:

您的测试不应该在循环中,它应该在输入之后。而且您需要使用or,而不是and,因此如果任一检查为真,它将成功。并且为了禁止偶数,模数测试应该是== 0

那么你需要为输入使用一个不同于循环迭代变量的变量,并且在range()函数中使用输入数字作为起点而不是硬编码11。

while True:
    number = int(input("Put the odd number of stars\n"))
    if number > 11 or number < 1 or (number % 2 == 0):
        print("wrong number")
    else:
        break

space = 0
for stars in range(number, 0, -2):
    print(space * " " + stars * '*')
    space = space + 1

【讨论】:

  • 小调整:for space, star in enumerate(range
  • 非常感谢
  • 没有清楚地考虑问题。这是大多数初学者编程错误的根源。
  • 布尔运算符的误解也很常见,因为这些词在英语中的使用方式不同。
猜你喜欢
  • 2019-07-23
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 2017-10-01
  • 1970-01-01
  • 2014-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多