2

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

我想要:

  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
4

3 回答 3

4

你想要这样的东西:

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

但是请注意,如果您只返回counts,而不是实际奇数/偶数值的列表,则可以利用以下事实在 O(1) 时间内轻松计算此函数的返回值任何偶数N,返回值总是(N/2, N/2),而任何奇数N,返回值总是(floor(N/2), floor(N/2) + 1)

于 2013-04-20T10:15:37.230 回答
2

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

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}
于 2013-04-20T10:22:06.887 回答
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为奇数添加一个子句并更改positioni(或反之亦然)

if i % 2 == 0:
    even_count = even_count+1
else:
    odd_count = odd_count+1
于 2013-04-20T10:12:59.113 回答