使用main函数仅显示列表中的奇数

时间:2016-05-06 15:28:49

标签: python function

我试图制作一个只显示1到12之间奇数的列表,但我必须使用def main函数。我已经看了一遍,并尽我所能。我不知道为什么,但我总是在使用def main函数时遇到麻烦。这是我现在的计划。

print("I will display the odd numbers between 1 and 12.")

def main( ):

    for num in [0,1,2,3,4,5,6,7,8,9,10,11,12]:

        odd = num[::2]

main( )

print (odd)

任何人都有任何建议或看到我做错了什么?

3 个答案:

答案 0 :(得分:1)

你非常接近。首先要删除for - 循环,因为您要做的是将列表[0,1,2,3,4,5,6,7,8,9,10,11,12]分配给变量num,而不是迭代列表中的各个数字。 然后您会注意到num[::2]实际上为您提供偶数,因此将其更改为num[1::2]。最后,您必须在print (odd)函数内移动main,因为变量odd仅在该函数中定义。

最终结果应如下所示:

def main():
    print("I will display the odd numbers between 1 and 12.")
    num = [0,1,2,3,4,5,6,7,8,9,10,11,12]
    odd = num[1::2]
    print (odd)
main()

如果你想保持循环,你必须单独检查每个数字,如果奇数则附加奇数列表:

odd = [] # make an empty list
for num in [0,1,2,3,4,5,6,7,8,9,10,11,12]: # for each number...
    if num % 2: #...check if it's odd with a modulo division
        odd.append(num) # if yes, add it to the list
print(odd)

答案 1 :(得分:0)

Python隐式定义main()函数,与C ++和其他函数不同。代码中的问题不在main()的定义中。如果您阅读错误消息:

TypeError: 'int' object is not subscriptable

你可能会知道类型有问题。使用您提供的代码片段,您将遍历一个数字列表(Python具有一个函数range(),专门用于生成数字序列)和每次迭代时,数字(类型{{ 1}})存储在变量int中。而你正试图使用​​切片,这是为迭代。 num不是可迭代的。在你的情况下你不需要for循环。这样就可以了:

int

答案 2 :(得分:0)

你需要学习很多东西,但在这种特殊情况下你使用range函数来获取数字,甚至通过向用户询问input的数字来使其更加通用,就像此

def odd_number(n):
    print("I will display the odd numbers between 1 and",n)
    odd = list(range(1,n+1,2))
    print(odd)

def main():
    n = int(input("choose the max number to display odd number: "))
    odd_number(n)

odd_number(12)
main()