0

这是我的意思的一个非常简单的例子:

def work():
    x = input("Give me a number : ")
    if x in range(30000):
        print "hello"

所以只要我在那个范围内输入一个数字,它就会打印你好,但是如果我希望它只接受那个范围内的奇数呢?我尝试定义一个单独的函数,它的范围只是像这样的奇数:

def work():
    a = input("Give me a number : ")
    if a in range(30000):
       X = range(30001)
       y = (2*X)-1
       if a in range(y):
           print "hello"

但这不起作用。

4

4 回答 4

6
if 0 <= x < 30000 and x % 2 == 1:
    print "hello"
于 2013-10-06T22:39:14.523 回答
1

注意:Python 2.x 没有做优化 - 所以这只适用于 Python 3.xrange

您可以利用这一点xrange(或range在 3.x 中 - 不需要生成列表并且可以进行成员资格测试......)通过为其提供一个步骤参数以及开始和结束停止......

因此,您可以使用检查直到 30000 的奇数:

if number in xrange(1, 30000, 2):
    pass

例如:

>>> for number in (1, 2, 3, 999999):
    print number in xrange(1, 30000, 2)

True
False
True
False
于 2013-10-06T22:42:54.707 回答
0

奇数不能除以 2,因此您可以使用模运算符验证这一点:

x % 2

在 Python 中,一个不等于 0 的数字被认为是True,所以这将完成工作:

def work():
    x = input("Give me a number : ")
    if x in range(30000) and x % 2:
        print "hello"
于 2013-10-06T22:38:26.127 回答
0

如果您想列出数字,这是一种通用的方法(但您应该只使用该range()函数):

def every(increment, range, offset=0):
    current = offset
    yield current
    while(1):
        current += increment
        if current < range:
           yield current
        else:
           break

因此,对于 30,000 的赔率,它将是:

for i in every(2, 30000, 1):
    ...
于 2013-10-06T22:43:13.390 回答