求助..python初学遇到奇怪的问题 搞不明白了
#coding=UTF-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
def my_abs(x):
if x >= 0:
return x
else :
return -x
#print u'请输入数字'
x = raw_input(u'请输入数字')
y = my_abs(int(x))
print u'%s的绝对值为%d'%(x,y)
在CMD上运行结果是
-----------------------------------------
璇疯緭鍏ユ暟瀛2
?Traceback (most recent call last):
File "D:\Workspace\abs.py", line 13, in <module>
print u'%s鐨勭粷瀵瑰€间负%d'%(x,y)
IOError: [Errno 28] No space left on device
-----------------------------------------
在vscode里面的cygwin终端里面运行结果一样
在独立的cygwin里面输入python abs.py后
换行 什么都不会发生..这时按回车的话:
-----------------------------------------
请输入数字Traceback (most recent call last):
File "abs.py", line 12, in <module>
y = my_abs(int(x))
ValueError: invalid literal for int() with base 10: ''
-----------------------------------------
如果在换行之后不按回车而是输入任意一个数字的话
---------------------------------------
$ python abs.py
1
请输入数字1的绝对值为1
------------------------------------------
没有乱码 但是顺序错了 应该先print后raw_input的但是反过来了...
顺便说下如果在raw_input('')里面写请输入数字的话结果差不多 一样是先出现数字再出现提示文字.....
以上程序如果换成GBK码可以在cmd上正常输出..
问题有两个
一:为什么会乱码,为什么在cygwin里没有乱码,怎么消除乱码.
二:cygwin那个奇葩的情况是怎么回事..怎么解决
OTL 求解 看教程 在这卡一下午了