我需要打印出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.")
帮助?
答案 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,))