2016-05-06 9 views
-1

1から12までの奇数を表示するリストを作成しようとしていますが、def main関数を使用する必要があります。私は全面的に見て、私ができるすべてを試しました。私はなぜ、私はいつもdefメイン機能を使用してトラブルがあったか分からない。ここで私は今どこにいるの?メイン関数を使用してリスト内の奇数のみを表示する

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

main関数はPythonに特有のものは何もありません。あなたの問題は、どの機能でも同じでしょう。 – polku

答えて

1

あなたはかなり近いです。 for -loopを取り除くことから始めます。リスト内の個々の数字を反復するのではなく、リスト[0,1,2,3,4,5,6,7,8,9,10,11,12]を変数numに代入する必要があるからです。 次に、num[::2]が実際に偶数を与えることに気づくでしょう。そのため、それをnum[1::2]に変更してください。最後に、変数oddはその関数内でのみ定義されているため、main関数内でprint (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は暗黙的にC++およびいくつかの他とは違って、main()関数を定義します。あなたのコードの問題は、main()の定義にありません。エラーメッセージ:

TypeError: 'int' object is not subscriptable 

あなたはタイプに何か問題があると思うかもしれません。あなたが提供したコードスニペットでは、数字のリストを繰り返しています(Pythonには数字のシーケンスを生成する目的で、特にrange()という関数があります)。各繰り返しで数値(タイプint)は変数num。そして、あなたはiterablesのために作られたスライスを使用しようとしています。 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()'と打ちます。 'main'は作成しないと存在しないので、' NameError'を取得します。それは、他のどのような(そして、_unlike_ CやJavaのように、 "main"という名前が特別な意味を持つように)単なる関数です。スクリプトとして実行する際に '' __name__'に割り当てられる文字列['' __main __ ''](https://docs.python.org/3/library/__main__.html)を考えていましたか? –

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() 
関連する問題