如何排查Python列表程序中的错误?附报错信息及代码
错误原因及修复方案
核心错误1:混合类型列表无法排序
你执行pizza_and_prices = prices + toppings时,直接将整数类型的价格列表与字符串类型的配料列表拼接,得到的列表同时包含int和str两种元素:
[2, 6, 1, 3, 2, 7, 2, 'pepperoni', 'pineapple', 'cheese', 'sausage', 'olives', 'anchovie', 'mushrooms']
Python的sort()方法无法比较不同类型的元素,因此抛出TypeError: '<' not supported between instances of 'str' and 'int'。
核心错误2:append()方法参数使用违规
代码中的pizza_and_prices.append(2.5,'peppers')不符合语法,append()只能接收一个参数,传入两个值会触发另一个TypeError。
修复后的代码示例
正确的做法是将价格与对应配料配对成元组,组成元组列表后再排序(默认按元组第一个元素即价格排序):
toppings = ['pepperoni', 'pineapple', 'cheese', 'sausage', 'olives', 'anchovie', 'mushrooms'] prices = [2,6,1,3,2,7,2] num_two_dollar_slices = prices.count(2) num_pizzas = len(toppings) print('We sell ' + str(num_pizzas) + ' different kinds of pizza!') # 将价格和配料配对为元组列表 pizza_and_prices = list(zip(prices, toppings)) print(pizza_and_prices) pizza_and_prices.sort() cheapest_pizza = pizza_and_prices[0] priciest_pizza = pizza_and_prices[-1] pizza_and_prices.pop() # 追加新的披萨元组 pizza_and_prices.append((2.5, 'peppers')) pizza_and_prices.sort() three_cheapest = pizza_and_prices[:3] print(three_cheapest)
内容的提问来源于stack exchange,提问作者nikam
相关产品推荐
相关产品推荐

