2017-11-14 5 views
0
import sys 
n = input() 
a = [] 
for i in range(n): 
    temp = input() 
    a[i].append(temp) 
for i in range(n): 
    a[i] = a[i] - 1 
    if a[i] ==0 and a[i+1] != 0 or a[i-1] != 0: 
     print "NO" 
     break 
print "YES" 
for i in range(n): 
    print a[i] 

コードがエラーなしで実行されているが、次のコードを考えてみましょう

2 
2 2 
Traceback (most recent call last): 
    File "1.py", line 5, in ? 
    temp = input() 
    File "<string>", line 1 
    2 2 
    ^
SyntaxError: unexpected EOF while parsing 

は、なぜそれが動作し、EOFエラーを与えていない入力後にエラーを与えていますか?

+0

パイプが停止するという事実を 'input()'が扱うことができないためです。その場合、 'sys.stdin'を反復処理するほうがよいでしょう。 –

+2

そして 'a [i] .append(temp)'はここでは意味がありません。 –

+1

[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)を呼び出します。 –

答えて

0

a[i]リストaは1つの配列にすぎないため、機能しません。配列の中にリストがある場合は、a[i]が動作します。

forループが実行されるのに十分な配列がアレイ内にある限り、

だから、あなたはループの最初を実行する前に、あなたはa

0

n配列([])を追加する必要があり、私はあなたが[i]を.append(TEMP)

から[I]を削除するために持っていると思います
import sys 
n = input('Please input n: ') 
a = [] 
for i in range(n): 
    temp = input('Please input temp: ') 
    a.append(temp) 
for i in range(n): 
    a[i] = a[i] - 1 
    if a[i] == 0 and a[i+1] != 0 or a[i-1] != 0: 
     print "NO" 
     break 
print "YES" 
for i in range(n): 
    print a[i] 

と結果である:

Please input n: 5 
Please input temp: 1 
Please input temp: 2 
Please input temp: 3 
Please input temp: 4 
Please input temp: 5 
NO 
YES 
0 
2 
3 
4 
5 

私が正しくあなたの仕事を理解していれば。

関連する問題