为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 中返回偶数和奇数

在 Python 中返回偶数和奇数

慕森王 2021-06-28 17:21:52
我在回答 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])
查看完整描述

3 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

使用列表推导式的更 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]


查看完整回答
反对 回复 2021-06-29
?
开满天机

TA贡献1786条经验 获得超13个赞

使用Generators(yield关键字)查看解决方案


def number_game(x,y):

  num = range(min(x,y),max(x,y))

  for e in num:

    if x > y and e%2 == 0:

      yield e

    elif x < y and e%2 != 0:

      yield e


# you have to materialize generators to lists before comparing them with lists

print(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])


查看完整回答
反对 回复 2021-06-29
  • 3 回答
  • 0 关注
  • 226 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信