2016-05-06 43 views
-1

我想列出只顯示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) 

任何人有任何建議或看看我在做什麼錯?

+1

您是否有使用其他語言編程的經驗,或者您對編程還不熟悉? – amiller27

+0

整體編程全新。 – tmoKSU

+2

主函數在Python中沒有任何特定的內容,甚至可以根據自己的喜好命名主函數。您的問題將與任何功能相同。 – polku

回答

1

你很近。開始擺脫for環回,因爲你想要做的是將[0,1,2,3,4,5,6,7,8,9,10,11,12]列表分配給變量num,而不是迭代列表中的單個數字。 然後你會注意到num[::2]實際上給了你偶數,所以把它改爲num[1::2]。最後,您必須在main函數內移動print (odd),因爲變量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) 
+0

有沒有辦法用for循環做到這一點? – tmoKSU

+0

@tmoKSU:是的,但這種方式更復雜。我已經更新了我的答案。 –

0

的Python隱式地定義的功能main(),不同於C++和其他一些人。代碼中的問題不在main()的定義中。如果您閱讀錯誤消息:

TypeError: 'int' object is not subscriptable 

您可能會發現某種類型的問題。通過您提供的代碼片段,您可以遍歷數字列表(Python的函數range()專門用於生成數字序列),每次迭代時,數字(類型爲int)都存儲在變量num。而你正在嘗試使用切片,這是爲迭代製作的。 int不是一個可迭代的。你的情況你不需要for循環。這將這樣的伎倆:

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] # first index is one to get the odd numbers 
print(odd) 
+0

我認爲你的意思是「Python確實不會隱式定義'main()'函數......」。直到程序員明確定義它才存在。 –

+0

@ KevinJ.Chase不,它一直存在。這就是爲什麼Python代碼不需要明確的定義 – Leva7

+0

不,它沒有。試一下:打開一個'python'或'python3'交互式會話並鍵入'main()'。你會得到一個'NameError',因爲'main'不存在,除非你創建它。它只是一個函數,就像任何其他函數一樣(和_unlike_ C或Java,其中名稱「main」具有特殊意義)。你是在考慮字符串['__main __''](https://docs.python.org/3/library/__main__.html),它在作爲腳本執行時被分配給'__name__'嗎? –

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