Python 使用 try/except 继续练习

Python exercise using try/except with continue

我不明白为什么我的代码在这里不能正常工作,它似乎在 except: continue 行之后退出 for 循环。我该怎么做才能解决这个问题? (代码执行但无论输入什么 list/letter 组合,输出始终为 -1,因此不会向 sum_total 变量添加任何内容)

sample_list = [
  'Black Mirror', 
  'Breaking Bad', #2
  'Stranger Things', #6
  'The Leftovers', #2
  'How I Met Your Mother' #7  4.25
]
letter = 'e'
def find_average_first_index(input_list, input_letter):
  sum_total = 0
  for i in input_list:
    try:
      sum_total += input_list.index(input_letter)
      print(sum_total)
    **except:
      continue**
        
  if sum_total == 0:
    return -1
  else:
    average_value = (sum_total / len(input_list))
    return average_value

您正在 input_list 上使用 index。我想你可能想在 i.

上使用它
sum_total += i.index(input_letter)

当您使用不在 list 中的元素调用 index 方法时,它将引发 ValueError 异常并且您的代码将转到 except 块并且由于continue 在那里,它将移动到下一次迭代。并且因为您在 input_list 上使用 index 方法和 letter,它总是会在此代码中引发 ValueError,这就是代码中出现错误的原因。

https://www.w3schools.com/python/ref_string_index.asp

https://www.w3schools.com/python/ref_list_index.asp

固定代码如下:

def find_average_first_index(input_list, input_letter):
sum_total = 0
for i in input_list:
    try:
        sum_total += i.index(input_letter)
        print(sum_total)
    except ValueError as e:
        print(e)
        print(f"No {input_letter} in {i}")
        continue
    
if sum_total == 0:
    return -1
else:
    average_value = (sum_total / len(input_list))
    return average_value

您的代码需要这样修改

sample_list = [
   'Black Mirror',
   'Breaking Bad', #2
   'Stranger Things', #6
   'The Leftovers', #2
   'How I Met Your Mother' #7  4.25
]

letter = 'e'

def find_average_first_index(input_list, input_letter):

   sum_total = 0
   for i in input_list:
       try:
           sum_total += input_list.index(input_letter)
           print(sum_total)
       except:
           continue
       if sum_total == 0:
           return -1
       else:
           average_value = (sum_total / len(input_list))
           return average_value

find_average_first_index(sample_list,letter)

错误:-

  1. 您需要像这样添加tryexcept(如果您的代码模式错误,您会看到错误消息;参见:https://careerkarma.com/blog/python-break-and-continue/

    try:
      sum_total += input_list.index(input_letter)
      print(sum_total)
    except:
      continue
    
  2. find_average_first_index(sample_list,letter)

    运行你需要调用函数的代码。 (参考:https://www.w3schools.com/python/python_functions.asp