在 Python 中返回偶数和奇数

我在回答 Python 测验时遇到了一些问题:


给定两个数 X 和 Y,编写一个函数:返回 X 和 Y 之间的偶数,如果 X 大于 Y,否则返回 x 和 y 之间的奇数


例如,取整数 10 和 2 。该函数将返回 2 到 10 之间的所有偶数。


我真的很感激一些帮助,因为我还是个新手


这是我的代码:


def number_game(x,y):

  num = range(x,y)

  for e in num:

    if x > y:

      return e%2 == 0

    else:

      return e%3 == 0

以下是测试用例:


test.assert_equals(number_game(2,12), [3, 5, 7, 9, 11])

test.assert_equals(number_game(0,0), [])

test.assert_equals(number_game(2,12), [3, 5, 7, 9, 11])

test.assert_equals(number_game(200,180), [180, 182, 184, 186, 188, 190, 192, 194, 196, 198])

test.assert_equals(number_game(180,200), [181, 183, 185, 187, 189, 191, 193, 195, 197, 199])


慕森王
浏览 227回答 3
3回答

FFIVE

使用列表推导式的更 Pythonic 方式def number_game(x,y):    if x > y:        return [n for n in range(y,x) if n%2==0]    elif y==x:        return []    else:        return [n for n in range(x,y) if n%2!=0]

开满天机

使用Generators(yield关键字)查看解决方案def number_game(x,y):&nbsp; num = range(min(x,y),max(x,y))&nbsp; for e in num:&nbsp; &nbsp; if x > y and e%2 == 0:&nbsp; &nbsp; &nbsp; yield e&nbsp; &nbsp; elif x < y and e%2 != 0:&nbsp; &nbsp; &nbsp; yield e# you have to materialize generators to lists before comparing them with listsprint(list(number_game(2,12)) == [3, 5, 7, 9, 11])print(list(number_game(0,0)) == [])print(list(number_game(2,12)) == [3, 5, 7, 9, 11])print(list(number_game(200,180)) == [180, 182, 184, 186, 188, 190, 192, 194, 196, 198])print(list(number_game(180,200)) == [181, 183, 185, 187, 189, 191, 193, 195, 197, 199])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python