python代码中碰到的问题及解决 凯

一、针对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')           #设置默认编码

做人一定要靠自己
原文地址:https://www.cnblogs.com/wushank/p/5068558.html