2017-02-16 2 views
0

だ私は悩みの解決を持っています問題です:CSサークル - Pythonの - リスト - それはここで自然な運動

は、入力として、正の整数nを取り、最初から成るリスト[1, 2, ...]を返す関数naturalNumbersを書きますn個の自然数。ここで

は、私がこれまで持っているコードです:

def naturalNumbers(x): 
    x = input() 
    myList = [] 
    for i in range (0, x): 
     return myList = myList + [i] 
     print(myList) 

私は機能のためにreturnを入れてする必要がある場合のように、本当に困惑しています。

+1

リターンは常にあなたが最後のものです。戻り値の後に関数が終了し、その関数のコードはそれ以上実行されません – Nullman

+0

なぜ 'x'を関数の引数として渡して、その値を' input() 'から返すのですか? – slackmart

+1

以下の答えはきれいなOPですが、あなたの仕事を達成するために単純なリストの理解を使うことができます: '[範囲内のn(1、x + 1)]' '。それは "通常の" forループを行うよりもはるかにきれいに見えます。 –

答えて

1

あなたがそうあなたがする必要があるすべては

def naturalNumbers(x): 
    return list(range(1,x + 1)) #didnt notice we are in python 3 

0である自然数

+0

@leaf on python 2私は 'type(range(1,5))'とリストを取得していますが、範囲オブジェクトはPythonの3つのものですか? – Nullman

+0

@leafそれを指摘してくれてありがとう、私は答えを修正しました – Nullman

+1

問題はありません。喜んで助けてください。 –

0
def naturalNumbers(n): 
    n = input() 
    myList = [] 
    for i in range(1, n + 1): 
     myList.append(i) 
    return myList 

とみなされていない、リストにキャストオブジェクトを返すrange() 機能を非常に懸命に作業をしていますか、 リストの理解

def naturalNumbers(n): 
    n = input() 
    myList = [i for i in range(1, n + 1)] 
    return myList 

returnは関数の終わりです。ループの外にある必要があります。

+0

Pythonでは 'range()'関数は_exclusive_です。それは、「n」の数字になるが、そこで止まることを意味する。代わりに 'range(0、n + 1)'を実行する必要があります。 –

+0

思い出してくれてありがとう。 –

0

あなたの「主な」コードとあなたが書くように求められている機能の両方を混ぜています。

あなたの機能をリスト生成機能naturalNumbersにのみさせてください。 と別のmain関数を使用します。

あなたはメインの方法を無視することができます__name__ = '__main__' これはちょうど良いフォームで正しく動作することです。

# this method outputs a list from 0 to x 
def naturalNumbers (x): 
    l = list[] 
    for i in range(0, x+1): 
     list.append(i) 
    return l 

def main(): 
    x = input() 
    # should check if x is an integer (defensive programming) 
    print (naturalNumbers(x)) 

if __name__ = "__main__" 
    main() 
  • も自然数を用いる定義に応じて0または1
0

戻り関数から出力されたフォームを開始することができます。戻り値がなければ、関数は呼び出された場所に何も返さない。

def naturalNumbers(n): 
    return [x for x in range(0,n)] 

print(naturalNumbers(5)) 

上記のprint文は自然数の出力を使用し、[0,1,2,3,4]を印刷します。

戻り値を削除し、それを値に割り当てるとします。

def naturalNumbers(n): 
    numbers = [x for x in range(0,n)] 
    #assignment rather than return, we could do other operations. 

print(naturalNumbers(5)) 
#returns None 

この上記のようにprint文をプリント「なし」

は、Python

+0

Pythonでは 'range()'関数は排他的です。それは、「n」の数字になるが、そこで止まることを意味する。代わりに 'range(0、n + 1)'を実行する必要があります。 –

+0

ありがとう私は排他的なものが何を意味するか分からなかった。 –

0

のデフォルトの戻り値で、この簡単な方法を試してみてください。

def naturalNumbers(n): 
    myList = [] 
    for i in range(0,n): 
     myList = myList+[i+1] 
    return myList 
関連する問題