我正在通过Pluralsight学习一门名为构建您的第一个Python分析解决方案的课程。当前的模块是关于IDE - IDLE的教学。下面的演示使用了一个名为price.py的预构建python文件,该文件应该输出一个项目列表以及总价格。在示例中,指导教师正在使用except和continue求解零条目,如图所示,当指导教师运行它时,它会工作。课程示例
但是当我试图镜像代码时:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
price_data = pd.read_csv('~/Desktop/price.csv')
print(price_data.head())
price_data = price_data.fillna(0)
print(price_data.head())
def get_price_info():
for index, row in price_data.iterrows():
total_price = row['Total_Price']
quantity = row['Quantity']
try:
price_of_a_unit = (total_price/quantity)
print(price_of_a_unit)
except ZeroDivisionError :
continue
get_price_info()
plt.bar(price_data.Things, height=price_data.Total_Price)
plt.title('Barplot of Things vs Total_Price')
plt.show()
我得到错误'continue' not proper in the loop.
本课程使用Python IDLE 3.8。我当前使用的版本是IDLE 3.10.4.
我已经反复检查了截图中的代码,在我看来,代码是完全相同的。我也研究了错误,仍然不能拿出一个解决方案,将允许我运行脚本。我是新手,很想知道问题出在哪里。
基于一点,代码与屏幕截图不匹配。我重新加载了原始的price.py文件,并进行了使其匹配所需的编辑。如果我仍然遗漏了什么,我将很感激知道错误在哪里。
在对try catch块做了一些研究之后,我能够编辑代码try:
price_of_a_unit = (total_price/quantity)
print(price_of_a_unit)
except ZeroDivisionError:
print("Make sure no divisions by 0 are made.")
except NameError:
print("Make sure both numbers are defined.")
并让代码运行。谢谢你
try-except块缩进不正确:它在for循环完成后运行,因此continue语句在循环之外(无效)。
# loop begins
for index, row in price_data.iterrows():
total_price = row['Total_Price']
quantity = row['Quantity']
# loop ends
# try/catch begins
try:
price_of_a_unit = (total_price/quantity)
print(price_of_a_unit)
except ZeroDivisionError:
continue # outside of a loop - invalid
# try/catch ends