1

フォームの 1 行の入力から 2 つの数値を加算するプログラムを作成しています。

番号 + その他の番号

「文字列インデックスは整数でなければなりません」というエラーが表示され続けますが、すべてのインデックスで type を呼び出すと、すべて整数として表示されます。

これを修正するにはどうすればよいですか? これがコードです

S = input()
for position in range(0, len(S)):
   if '+'== position:
     break
a=int(position)
Sum = (S[0,a])+(S[a, len(S)])
print(Sum)
#print(position)   
#print(type(position))
#print(type(len(S)))
#print(type(0)) 
4

3 に答える 3

7

当面の問題

コンマではなくS[0:a]and (スライス)を使用するつもりだったのでしょう。S[a:len(S)]

スライスについての注意...

先頭のゼロまたは末尾のゼロを指定する必要はありませんlen(S)。それらは暗黙的です。S[:a]したがって、 andS[a:]を同じ意味で使用できます。

S[0:a] + S[a:len(S)]また、と同等であることに注意してくださいS。おそらくそこに the を含めたくなかったので、おそらく代わり+に使用したいと思うでしょう。S[a+1:len(S)]

文字列内の文字の位置を見つけることに関する別の注意

インデックスを手動でループする必要はありません.index()。これを行うための文字列のメソッドが既にあります。

>>> "hello".index("e")
1

全体的な目標を達成するためのより簡単な方法

関数を使用してsplit()、文字で区切られた文字列の一部を取得できます+

S = input()
number_strings = S.split('+')
numbers = [int(n) for n in number_strings]
print sum(numbers)

おまけとして、これは任意の数の数値に対して機能し1+2+3ます4

3 行目では、リスト内包表記と呼ばれるものを使用して、リストの各要素を操作し、新しいリストを生成します。この場合、文字列のリストを取得して整数のリストを作成します。

4 行目は、Python の組み込みsum()関数を利用して、アイテムのシーケンスの合計を自動的に返します。

上記の行を要約することもできることに注意してください。

print sum(int(n) for n in input().split('+'))

これははるかに整頓された形式です。説明を簡単にするために、上に間隔を空けて表示しました。

于 2012-12-24T21:17:31.030 に答える
0

0, aタプルです。代わりに、シーケンスをスライスするつもりでしたS[0:a]か?

于 2012-12-24T21:17:16.397 に答える
0

を次のように変更する必要があります。

Sum = (S[0:a])+(S[a: len(S)])
于 2012-12-24T21:19:48.917 に答える