一、针对raw_input输入的字符进行类型判断及转换:
raw_input输入默认为字符,如果输入的是数字字符,想自动转换,即:输入为a,不做操作,如果输入为3,即转化为整数。
可利用try..except..的方法,让程序将raw_input()输入的值转换为int,如果输入的是‘23’则直接转换为数字23,如果输入的是‘xx’则会try失败然后运行except的部分。
#!/usr/bin/python27 #_*_ coding:utf-8 _*_ def myint(s):
if str.isdigit(s): ###对输入是否是数字进行判断
s = int(s) ###如果输出的是个数字,则转化为整数类型
else:
s = s.decode('utf-8') ###如果是字符串或汉字,则转化为unicode类型(主要是针对汉字转化,汉字默认是str)
return s
或
try: eval(s) ###eval将字符串str当成有效的表达式来求值并返回计算结果 except NameError: ###名称错误 return s except SyntaxError: ###语法错误 return s else: return eval(s) a = raw_input('please input:') print(myint(a))
特别说明:
1、加上NameError,可以防止输入字符串出现的报错:
please input:aaa
Traceback (most recent call last):
File "test.py", line 16, in <module>
print(myint(a))
File "test.py", line 6, in myint
eval(s) ###eval将字符串str当成有效的表达式来求值并返回计算结果
File "<string>", line 1, in <module>
NameError: name 'aaa' is not defined
2、加上SyntaxError,可以防止输入中文出现的报错:
please input:中国
Traceback (most recent call last):
File "test.py", line 16, in <module>
print(myint(a))
File "test.py", line 6, in myint
eval(s) ###eval将字符串str当成有效的表达式来求值并返回计算结果
File "<string>", line 1
中国
^
SyntaxError: invalid syntax
二、针对存放在字典或列表中的中文进行比对判断时,出现如下报错
ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128)
1.原因分析:字符问题。。
2.解决办法:在出现问题的脚本加上如下三行即可:
import sys
reload(sys)
sys.setdefaultencoding('utf-8') #设置默认编码