本文目录一览:
- 1、python运行后显示Traceback (most recent call last):什么意思?
- 2、在python中出现这种情况为什么
- 3、Python 运行报错NameError出现原因,怎么解决
python运行后显示Traceback (most recent call last):什么意思?
意思是:回溯(最近的一次呼叫)
这里表示您的Python程序出现了异常,括号中通俗的解释就是代码中引发异常的位置。
Python中一般使用try-except捕获异常。这样,如果引发异常,程序可对异常进行处理。避免了Traceback(most recent call last)等这样一些不友好的语句出现。
比如下面一个除零操作:
import traceback
try:
num = 1/0
except:
traceback.print_exc()
Traceback (most recent call last):
File "C:/Users/Administrator/AppData/Roaming/JetBrains/PyCharmCE2021.2/scratches/scratch.py", line 5, in module
num = 1/0
ZeroDivisionError: division by zero
黑体标注的是异常具体位置。
如果对异常进行处理,就不会显示这些回溯信息(Trackback这些内容)
try:
num = 1/0
except:
print('异常了')
这里程序只打印‘异常了’这三个字,但在具体编写程序时,不建议这样使用。使用中建议指明具体的异常类型。如下:
try:
num = 1 / 0
except ZeroDivisionError as e:
print(str(e))
打印输出“division by zero”,比Traceback友好多了!
希望回答对您有帮助!
在python中出现这种情况为什么
python为什么会出现这种错误?
这是 Python 的浮点数精度问题,因为 Python 在存储浮点数的方法是存储二进制的科学计数法。
8 字节 64 位存储空间分配了 52 位来存储浮点数的有效数字,11 位存储指数,1 位存储正负号。
简单来说,因为小数点后面理论上可以有无限位数,所以不可能在有限字节中精确存储,所以用的是类似科学计数法的非精确存储。我们用分数来打比方,0.333334 可以用 1/3 来表示,但是 1/3 不等于 0.333334。所以在 Python 中就出现了这个问题,不光是 Python,其他语言也有类似的问题。
如何解决这种问题
接下来我们看看如何解决这个问题。
对于精确度要求不高的场景,可以计算后使用 round 函数近似。
对于确定小数位数的场景,例如金额 1.01,固定两位小数,则可以乘以 100 以后用整型保存。
对于精确度要求高的场景,Python 有 decimal 模块处理。
Python 运行报错NameError出现原因,怎么解决
python程序,报错NameError: name XX is not defined 是没有声明造成的,需要在文件的前两行进行声明编码,声明方法为:
1、写一个python文件,文件中有中文字符,且未声明编码。
2、当程序文件中,存在中文字符时候,文件未声明编码格式就会出现报错信息: File "encode.py", line 1SyntaxError:
Non-ASCII character '\xe7' in file encode.py on line 1, but no encoding
declared; see //..python.../dev/peps/pep-0263/ for details for details。
3、根据错误提示,在python官网得到如下帮助信息。
4、所以,按照帮助文档的提示以及例子,在Python文件中加入一个编码声明。
5、保存之后,再次运行,运行成功。