我试图制作一个只显示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)
任何人都有任何建议或看到我做错了什么?
答案 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)