没有余数的数字python

时间:2013-12-29 11:04:45

标签: python numbers integer

我需要打印出1和n之间的数字(n用键盘输入),不分2,3和5。 我需要使用while或for循环,其余部分使用%。 我是新来的,我只是不了解%的用法? 我试过这样的事情:

import math

print("Hey. Enter a number.")

entered_number = int(input())

for i in range(1, entered_number):

    if i%2 != 0:
        print("The number", i, "is ok.")
    else:
        pass
    if i%3 != 0:
        print("The number", i, "is ok.")
    else:
        pass
    if i%5 != 0:
        print("The number", i, "is ok.")

帮助?

5 个答案:

答案 0 :(得分:5)

您需要在一个语句中测试所有3个条件,而不是3:

for i in range(1, entered_number):    
    if i % 2 != 0 and i % 3 != 0 and i % 5 != 0:
        print("The number", i, "is ok.")

and运算符确保在打印前满足所有三个条件。

您正在单独测试每个条件,这意味着如果数字是10,那么您仍在打印The number 10 is ok.,因为它不能被3整除。对于 的数字>好吧,你正在打印The number ... is ok. 3次,因为你的代码测试它不能分别被3个不同的数字整除,每次打印。

答案 1 :(得分:1)

如果某事分为7,那么:

something % 7 == 0

如果某事分为7 9,那么:

something % 7 == 0 and something % 9 == 0

相反,如果某事分为7 9,那么:

something % 7 == 0 or something % 9 == 0

除以7 9的东西由表达式给出:

not (something % 7 == 0 or something % 9 == 0)

您不需要代码中的else: pass位,并且if语句中包含三个%, ==位的if语句就足够了。

答案 2 :(得分:0)

您应该同时检查这三个条件:

if i%2 != 0 and i%3 != 0 and i%5 != 0:
    print("The number", i, "is ok.")

否则,您将为一个号码多次打印相同的消息。

无论如何,对于您的第二个问题,%操作被称为modulo,它会为您提供除法的剩余部分。例如,5%3 = 2因为5 = 3*1 + 2。当你检查i%2 != 0时,你实际上检查我是否可以除以2。

答案 3 :(得分:0)

print("Hey. Enter a number.")
entered_number = int(input())
for i in range(1, entered_number):
    if i%2 != 0 and i%3 !=0 and i%5!=0:
        print("The number", i, "is ok.")
a%b除以a时,

b会返回余数。例如:

>> 5%3
2

你在做错的是你在检查一个条件后打印,即使i可以被其他数字整除,它也会打印出来。例如,如果i为3,则它将满足第一个条件,因此打印出数字正常,但实际上它可以被3整除。

答案 4 :(得分:0)

我看到你已经解决了问题,但我的回答可能值得一读。

此问题实际上是对数字列表1..n进行过滤。您可以定义一个基本函数来测试数字x是否可以按数字y分割,然后使用此基本函数过滤列表以获得结果。

这是我的版本。

import math
from functools import partial

print("Hey. Enter a number.")

entered_number = int(input())

def not_dividable_by(x, y):
    return False if x % y == 0 else True

number_list = range(1, entered_number)

for i in [2, 3, 5]:
    test_func = partial(not_dividable_by, y=i)
    number_list = filter(test_func, number_list)

for number in number_list:
    print("%d is OK" % (number,))