√终端无法识别

时间:2016-06-15 03:58:42

标签: python-3.x

对于我的一类我必须做一个非常基本的计算器。我想以这样一种方式编写代码,即用户可以输入他们想要做的事情(例如√64)按回车并得到答案。我写了这个:

如果'√'在操作中:     squareRoot = operation.replace('√','')     squareRootFinal = math.sqrt(int(squareRoot))

当我在IDLE中运行它时,它就像一个魅力。但是,当我在终端中运行它时,会出现以下错误:

SyntaxError:非ASCII字符' \ xe2'在第50行的文件x.py中,但没有声明编码;

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

只需声明编码即可。 Python在这里开始有点谨慎,而不是猜测文本文件的编码。 IDLE是一个文本编辑器,因此已经在内部猜测编码和存储内容为unicode,它可以直接传递给Python解释器。

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

位于文件顶部。 (现在你的编码不​​是UTF-8,这很不可能。)

作为参考,在过去,文件有各种不同的可能编码。这意味着当写入磁盘时,相同的文本可以以二进制的不同方式存储。几乎所有编码都对字节0到127(ASCII子集)具有相同的解释。但如果文件中出现任何其他字节,则其含义可能不明确。

然而,近年来,UTF-8已经成为最常见的编码,所以它几乎总是安全的猜测。