帮助我使我的Python 2代码在Python 3中工作

时间:2011-08-03 00:58:28

标签: python python-3.x python-2.x

import math,sys,time;i=0
while 1: sys.stdout.write("\r"+':(_​_)'[:3+int(round(math.sin(​i)))]+'n'+':(__)'[3+int(ro​und(math.sin(i))):]);sys.s​tdout.flush();time.sleep(.​15);i+=0.5*math.pi

我很久以前在Python 2中编写了这个简单的程序,它工作正常,但它在Python 3中有语法错误。如果有人可以帮助我更新它以符合Python 3,我将不胜感激。感谢。

4 个答案:

答案 0 :(得分:4)

我将您的代码粘贴到一个文件中,保存它,然后在Python shell中打开它:

In [10]: f=open('test2.py')

In [11]: content=f.read()

In [12]: content
Out[12]: '#!/usr/bin/env python\n# coding: utf-8\n\nimport math,sys,time;i=0\nwhile 1: sys.stdout.write("\\r"+\':(_\xe2\x80\x8b_)\'[:3+int(round(math.sin(\xe2\x80\x8bi)))]+\'n\'+\':(__)\'[3+int(ro\xe2\x80\x8bund(math.sin(i))):]);sys.s\xe2\x80\x8btdout.flush();time.sleep(.\xe2\x80\x8b15);i+=0.5*math.pi\n'

注意这里和那里散布着'\xe2\x80\x8b'个字节。这些是以{utf-8:

编码的ZERO WIDTH SPACE个字符
In [24]: print(repr(u'\N{ZERO WIDTH SPACE}'.encode('utf-8')))
'\xe2\x80\x8b'

这就是您的代码产生语法错误的原因。

只需重新输入(或复制下面的代码),它就会在Python3中运行:

import math, sys, time; i=0
while 1: sys.stdout.write('\r'+':(__)'[:3+int(round(math.sin(i)))]+'n'+':(__)'[3+int(round(math.sin(i))):]); sys.stdout.flush(); time.sleep(0.15); i+=0.5*math.pi

答案 1 :(得分:1)

问题与您的Python版本无关。你的代码中有很奇怪的字符。

我将它粘贴在Metapad中,并且出现了一堆?,我认为这意味着不可打印的字符。

只需重新输入它就可以正常工作,或找到一个文本编辑器来显示这些字符并将其删除,或使用Python删除任何不可打印的字符。

答案 2 :(得分:1)

确实,@ agf是正确的。第一个(__)中的下划线之间有一个奇怪的字符。更正(并在Python 3中正常工作):

import math,sys,time;i=0
while 1: sys.stdout.write("\r"+':(__)'[:3+int(round(math.sin(i)))]+'n'+':(__)'[3+int(round(math.sin(i))):]);sys.stdout.flush();time.sleep(.15);i+=0.5*math.pi

答案 3 :(得分:0)

在python安装上使用2to3。标准(我认为)是2.7.2 +