2016-09-19 17 views
2
class targil4(object): 
    def plus(): 
     x=list(raw_input('enter 4 digit Num ')) 
     print x 
     for i in x: 
      int(x[i]) 
      x[i]+=1 
     print x 

    plus() 

これは私のコードです。ユーザから4桁の入力を得て、各桁に1を加えてそれを元に戻そうとします。リストインデックスはstrでなく整数でなければなりません

Traceback (most recent call last): 
['1', '2', '3', '4'] 
    File "C:/Users/Maymon/PycharmProjects/untitled4/targil4.py", line 1, in <module> 
class targil4(object): 
    File "C:/Users/Maymon/PycharmProjects/untitled4/targil4.py", line 10, in targil4 
    plus() 
    File "C:/Users/Maymon/PycharmProjects/untitled4/targil4.py", line 6, plus 
    int(x[i]) 
TypeError: list indices must be integers, not str 

Process finished with exit code 1 
+1

「i」は既にあなたのリストの各値です。 'x [i]'を行うのが間違っているあなたのループで何が起こっているのかをさらに理解し、ループ上のレッスンプランに戻してみましょう。 – idjaw

答えて

1

list comprehensionを使用して行うことができます。私はこのコードを実行すると、私はマッサージをしてもらいます何が起こっている。

# Because the user enters '1234', x is a list ['1', '2', '3', '4'], 
# each time the loop runs, i gets '1', '2', etc. 
for i in x: 
    # here, x[i] fails because your i value is a string. 
    # You cannot index an array via a string. 
    int(x[i]) 
    x[i]+=1 

私たちは新しい理解でコードを調整することでこれを「修正」できます。

# We create a new output variable to hold what we will display to the user 
output = '' 
for i in x: 
    output += str(int(i) + 1) 
print(output) 
+1

@idjawいいキャッチ。それは私が急いで書いたものです。 :-)ありがとう! – Frito

+0

ありがとうございます!出来た! –

0

あなたはまた、私はあなたが実際にそれぞれの文を見て、見て、ここでの回答のうち多くを得ることが信じている

y = [int(i) + 1 for i in x] 
print y 
+0

@ idjaw oops、私はしばらくの間それを誤っていたに違いない、恥ずかしがる...私を訂正してくれてありがとう – Dunno

関連する問題