码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-12-23 00:33:20      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:

 

一、针对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):
    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‘)

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

标签:

原文地址:http://www.cnblogs.com/wushank/p/5068558.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!