Python嘶嘶声忽略了“和”,但为什么呢?

2024-07-08 10:00:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我学习Python已经两周了。我可以让臭名昭著的Fizzbuzz打印Fizz或buzz,但它忽略了我的“and”功能,我不明白为什么?我可以窥视已完成的解决方案,但我真的不想这样做,我所做的几乎任何研究都会潜入解决方案。我只是想知道那条线有什么问题。而不是仅仅抓取完成的代码来提交

    for packers in range(1,101):
        if packers % 3 == 0:
            print("Fizz")
        elif packers % 5 == 0:
            print("buzz")
        elif packers % 3 == 0 and packers % 5 == 0:
            print("Fizzbuzz")
        else:
            print(packers)

Tags: and代码in功能forifrange解决方案
2条回答

您应该切换第二个和第三个elif块

现在,第二个elif块有点像一个全局集。它将打印任何可以被5整除的数字的嗡嗡声(即使它可以同时被5和3整除)。当这个条件变为false时,下一个条件就不可能为true(因为封隔器%5!=0,您刚刚检查了它)

相反,首先检查数字是否可被3和5整除,如果是,则打印fizzbuzz,如果不是,则继续检查数字是否仅可被5整除

问题在于:

  1. 如果数字可被3或5整除,则packers%3packers%5在有机会查找以下条件之前计算为True
  2. 当这两个条件都不通过时(这个数字不能被3和5整除),就不可能packers%3packers%5为0

你需要先检查两者是否都是可除的

  for packers in range(1,101):
        if packers % 3 == 0 and packers % 5 == 0:
            print("Fizz")
        elif packers % 5 == 0:
            print("buzz")
        elif packers % 3:
            print("Fizzbuzz")
        else:
            print(packers)

相关问题 更多 >

    热门问题