...私はこれを試してみました...
を私はあなたのコードは罰金だ試みたが、あなたがが望むようには動作しません。
def sum13(nums):
sum = 0
if nums[0] != 13:
sum += nums[0]
for i in range(len(nums)):
print 'Current number:', str(nums[i])
print 'Previous number:', str(nums[i-1])
if nums[i] != 13 and nums[i - 1] != 13:
sum += nums[i]
return sum
ls = [10,11,13,12,14,14]
print 'Total sum:', str(sum13(ls))
は59を返し、することになりました。 (10 + 11 + 14 + 14)= 49.
これはなぜ発生したのですか?ループnums [i-1]をチェックインするからです。
最初のループでi = 0なので、i-1 = -1です。したがって、nums [-1]はあなたのリストの最後の項目です。
この小さなテストを試してみることはできますか?この問題を解決する
一つの方法は次のとおりです。
def sum13(nums):
sum = 0
if nums[0] != 13:
sum += nums[0]
for i in range(1, len(nums)):
print 'Current number:', str(nums[i])
print 'Previous number:', str(nums[i-1])
if nums[i] != 13 and nums[i - 1] != 13:
sum += nums[i]
return sum
ls = [10,11,13,12,14,14]
print 'Total sum:', str(sum13(ls))
それはまだあなたのコードとテストを共有することができます動作しない場合は?コメントで述べたように
:
def sum13(nums):
if nums:
sum = 0
if nums[0] != 13:
sum += nums[0]
for i in range(1, len(nums)):
print 'Current number:', str(nums[i])
print 'Previous number:', str(nums[i-1])
if nums[i] != 13 and nums[i - 1] != 13:
sum += nums[i]
return sum
if not nums:
print 'Empty list'
ls = [10,11,13,12,14,14]
print 'Total sum:', str(sum13(ls))
ls2 = []
print sum13(ls2)
乾杯、
は空のリストですか? E:この行にエラーが表示されないことを確かめてください: 'nums [i]!= 13とnums [i - 1]!= 13:'? – tkausl
これは実行時エラーであり、コンパイルエラーではありません。 –
この関数を呼び出すコードを含める必要があります。エラーの原因になると思われます。 – shuttle87