我想我遇到了编码问题。当我更改为utf-16时,错误将更改为第一行“导入温度”
我安装了Python 3.x思考可能是版本问题,但症状相同。
我一直在运行的其他练习脚本运行良好。有什么想法吗?
Python表示语法错误发生在“temp = 0”
##### modules.py文件import temperature
temp = 212
convTemp = temperature.ftoc(temp)
print("The converted temp is " + str(convTemp))
temp = 0
convTemp = temperature.ctof(temp)
print("The converted temp is " + str(convTemp))
#### temperature.py文件内容
def ftoc(temp):
return (5.0/9.0) * (temp - 32.0)
def ctof(temp):
return (9.0/5.0) * temp + 32.0
从原始帖子更正代码后的结果。
hostname$ python modules.py
Traceback (most recent call last):
File "modules.py", line 1, in <module>
import temperature
File "/Users/[myusername]/Dropbox/python/temperature.py", line 1
SyntaxError: Non-ASCII character '\xfe' in file /Users/[myusername]/Dropbox/python/temperature.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
hostname$
答案 0 :(得分:1)
这确实是编码问题。对于UTF-16编码,\xFE
是BOM(\xFE \xFF
)的一部分。
使用UTF-16作为Python源代码并不是一个好主意。您无法使用编码标记为Python解析器提供源文件的源代码编码提示。如
# encoding: utf-8
有关详细说明,请参阅PEP-0263
,以下是重要信息的一部分:
允许以上述方式处理前两行的任何编码作为源代码编码,这包括ASCII兼容编码以及某些多字节编码,例如Shift_JIS。它不包括对所有字符使用两个或多个字节的编码,例如UTF-16 即可。这样做的原因是使编码检测算法在标记化器中保持简单。
答案 1 :(得分:0)
from temperature import ftoc
from temperature import ctof
这是多余的,因为您使用
导入了所有温度函数import temperature
您的语法错误,打印语句末尾缺少parens。
如果您需要str(temperature)
,还可以str(convTemp)
。解决这些问题,我认为它会正常工作。