求助..python初学遇到奇怪的问题 搞不明白了

a14788741 2018-01-17 09:38:52
#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 求解 看教程 在这卡一下午了
...全文
1173 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
乱码是因为汉字的编码问题
bai422 2018-01-24
  • 打赏
  • 举报
回复
用PYTHON3肯定没有编码格式问题了。
sanGuo_uu 2018-01-23
  • 打赏
  • 举报
回复
#!/usr/bin/python
# -*- coding: utf-8 -*-

def my_abs(x):
	if x >= 0:
		return x
	else :
		return -x

x = raw_input('请输入数字'.decode('utf-8').encode('gb18030'))

try:
	y = my_abs(float(x))
	print ('%s的绝对值为%d'%(x,y)).decode('utf-8').encode('gb18030')
except:
	print '输入的不是数字!'.decode('utf-8').encode('gb18030')
这是我写的,只解决了一部分问题 编码规则不懂,可以用python3,比2不容易乱码

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧