【问题标题】:Iterate through list of intervals in Python and return odd and even values?遍历 Python 中的区间列表并返回奇数和偶数值?
【发布时间】:2013-04-13 16:45:48
【问题描述】:

我正在为家庭作业编写一段代码。

我想:

  1. 获取用户输入 (n)。
  2. 在输入 (n) 范围之外创建一个列表。
  3. 遍历列表。
  4. 计算赔率和偶数。
  5. 返回奇数和偶数以用于其他函数

我被难住了,这是我所得到的:

def Input():
    n = eval(input("Enter number: "))

def GetOdds(n):
    odd_count = 0
    even_count = 0
    List_start = List[1]
    List_cont = List[1:]

    for i in range(n):
        ## I know I'll be using something like ## 
                if position % 2 == 0:
                                even_count = even_count+1
    return even_count
    return odd_count

【问题讨论】:

  • 不需要eval;只需int 就足够了,而且更安全。但究竟是什么问题?
  • @larsmans 我猜是 Zelle 的书,你不想让 this argument 重新开始......只是要明确一点,我同意你的看法。
  • @jamylak:感谢您的链接,还没有看到这个问题。有趣的讨论。

标签: python list loops python-3.x


【解决方案1】:

return 语句中可以有多个值。例如

def func():
    return 1,2

x, y = func()

在这种情况下,函数将分配x = 1y = 2

因此,在您的情况下,请制定您的 return 声明

return even_count, odd_count

当你调用函数时使用

even, odd = GetOdds(16)

对于您的奇偶区分,您的if 语句是正确的,您只需为奇数添加一个else 子句并将position 更改为i(或反之亦然)

if i % 2 == 0:
    even_count = even_count+1
else:
    odd_count = odd_count+1

【讨论】:

    【解决方案2】:

    你想要这样的东西:

    def GetOddEvenCount(n):
        odd_count = 0
        even_count = 0
    
        for elem in range(n):
            if elem % 2 == 0: even_count += 1
            else: odd_count += 1
        return odd_count, even_count
    

    示例用法:

    odd_count, even_count = GetOddEvenCount(10)
    print("Odds:", odd_count, "Evens:", even_count)
    

    输出:

    Odds: 5 Evens: 5
    

    但是请注意,如果您只返回 计数,而不是实际奇/偶值的列表,则此函数的返回值可以在 O(1 ) 时间利用以下事实:对于任何 偶数 整数 N,返回值将始终为 (N/2, N/2),而对于任何 奇数 整数 N,返回值将永远是(floor(N/2), floor(N/2) + 1)

    【讨论】:

    • 如果您使用N/2.0 或在Python3 中工作,您甚至可以在所有情况下返回(int(floor(N/2.0)), int(ceil(N/2.0)))
    【解决方案3】:

    您也可以返回字典来获取所有奇数:

    def GetOdds(n):
        d = {'Odds':[],'Evens':[], 'Odd_count':0,'Even_count':0}
        for i in range(n):
            if i % 2 == 0:
                d['Evens'].append(i)
                d['Even_count'] += 1
            else:
                d['Odds'].append(i)
                d['Odd_count'] += 1
        return d
    

    举个例子:

    >>> GetOdds(int(input('Enter a number '))) # Let's do 10 for example
    {'Odds': [1, 3, 5, 7, 9], 'Evens': [0, 2, 4, 6, 8], 'Odd_count': 5, 'Even_count': 5}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 2020-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      相关资源
      最近更新 更多