2012-03-02 13 views
0

私は自分自身にPythonを教えているし、奇妙な問題に遭遇しています。私がしようとしているのは、関数にリストを渡し、その要素がその周りの数字の合計であるリストを返すようにしていますが、私は思った通りに何か奇妙な結果が出たので、整数配列の数値を切り捨てるPython

整数配列を作成し、それを関数forに渡すと、リストの個々の値を出力する関数に渡すと、最初のものに続く数値が出力されますそれぞれのintは切り捨てられます。

例えば、次の入力および出力:

Please enter a number: 101 
Please enter a number: 202 
Please enter a number: 303 
Please enter a number: . 
1 
2 
3 

その10、101、または13453場合、これは、どんなにを入力起こる - 同じ現象が起こります。

私はおそらく単純なものが欠けていることは知っていますが、私のために、グーグルの量は私にこの問題の解決策をもたらしません。以下は、これを実行するために使用しているコードです。興味深いのは、リスト全体を任意の時点でforループの外側に出力すると、フルリストと適切なリスト(つまり、['101'、 '202'、 '303'])を返します。

ありがとう!

temp = list() 

def sum(list): 
    print list 
    for i in range(1, len(list)+1): 
     print i 
    return temp 

L = list() 
while True: 
    input = raw_input("Please enter a number: "); 
    if input.strip() == ".": 
     break 
    L.append(input); 

print L 

L2 = sum(L) 
print L2 
+0

あなたのインデントが間違っています。おそらくコピー/ペーストエラーです。 –

+2

'list'と' input'を変数名として使用しないでください。なぜなら、それらの対応する組み込み関数をシャドーするからです。 –

+0

'L 'に追加している値が整数ではなく文字列であることを知っていますか? –

答えて

5

ループではないリストの項目にわたって1からlen(my_list)に数字上

for i in range(1, len(my_list)+1): 
    print i 

反復、。後者を行うには、あなたはカウンターではなく、リスト項目を印刷している

for x in my_list: 
    print x 

(私はあなたに別の頭痛の種を保存するためにmy_listlistに改称しました。)

+0

ありがとう!ここで私が知る必要があるのは、記述したmy_listメソッドのfor xを使うことは、Javaに似たメソッドで数値を合計する簡単な方法です。 L1 = [1、2、3]の場合、L2 = [3,6,5] [1 + 2]となるように、リストのすべての近傍を一緒にリストに追加する、例えばi + 1/i/、1 + 2 + 3、2 + 3]通常はnumber = i-1 + i + i + 1(適切なエラーチェックはc) – Suki

+0

@スキ:明確にする必要はありません。全く新しい質問をしています。ページ上部の「Ask Question」ボタンを使用して、私以外の他の人が新しい質問を見ることができるようにしてください。 –

2

を使用しています。これはあなたが欲しいものです:

for i in list: 
    print i 

リストはそれ自身iterableであり、それをループするためのカウンタは必要ありません。

関連する問題