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):
    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‘)

时间: 2024-10-29 11:30:24

python代码中碰到的问题及解决的相关文章

如何从python代码中直接访问Android的Service

在Kivy中,通过pyjnius扩展可以间接调用Java代码,而pyjnius利用的是Java的反射机制.但是在Python对象和Java对象中转来转去总让人感觉到十分别扭.好在android提供了binder这个进程间通信的功能,Java中的Service也是基于Binder的C++代码封装来实现进程间通信的,这也为从Python代码中绕开pyjnius直接访问Java代码提供了可能,既然Java的Service是基于C++的封装来实现的,也同样可以在Python中封装同样的C++代码,这篇文

将SCONS工具集成到Python代码中

SCONS是Python的自动智能结构化编译工具,将来或许能代替Make. 在Windows或者Linux下,SConstruct文件相当于MakeFile,使用SCONS编译,需输入scons.bat(scons),后面带上编译选项options(如SConstruct所在的路径).观察scons.bat这个脚本,可以在其他Python代码中,将SCONS工具当作一个函数来调用.这个函数就是Scons.Script.main(),这个main函数将解析命令行中的编译选项,通过sys.argv[

js代码中碰到的函数

第一个--->字符串的截取substring()方法 substring(a,b)--->[a,b)区间截取字符.下标从0开始.从a下标开始,截取到b下标的前一个字符.返回一个新的字符串 1 <script type="text/javascript" src="js/jquery-1.9.1.min.js"></script> 2 <script type="text/javascript"> 3

Kivy A to Z -- 如何从python代码中直接访问Android的Service

在Kivy中,通过pyjnius扩展可以间接调用Java代码,而pyjnius利用的是Java的反射机制.但是在Python对象和Java对象中转来转去总让人感觉到十分别扭.好在android提供了binder这个进程间通信的功能,Java中的Service也是基于Binder的C++代码封装来实现进程间通信的,这也为从Python代码中绕开pyjnius直接访问Java代码提供了可能,既然Java的Service是基于C++的封装来实现的,也同样可以在Python中封装同样的C++代码,这篇文

python代码中判断版本

在python代码中判断python版本: if sys.version_info < (3, 0): lib.make_flows.argtypes = [c_char_p, c_char_p, c_int, c_int, c_int] lib.make_flows(avi, newpath, 0, 0, 10) else: in_path = bytes(avi, 'utf8') out_path = bytes(newpath, 'utf8') lib.make_flows(in_path

python绘图中使用公式时,解决\frac{}{}出来的字体太小的问题

在用matplotlib绘图需要在图片中加入公式时,一般要用 text 或 annotate函数,并结合latex语法 '$...$'. 对于分数,如果直接使用\frac{}{},会造成分子分母上的字都很小,如下图中的绿色公式所示. 解决这个问题需要用到 \displaystyle,即使用 '$\displaystyle ...$',效果如图中的蓝色公式所示.但是使用这个的前提条件是系统装有Latex.(我用的是ProTeXt,下载地址为:http://mirrors.ibiblio.org/C

项目中碰到的问题及解决方法记录

1. xml 3 字节的 UTF-8 序列的字节 3 无效 在STS中,将项目自动部署到tomcat 7并启动,发现启动过程中控制台打印出错误:3 字节的 UTF-8 序列的字节 3 无效 参考此文:https://my.oschina.net/tomJune/blog/673824 首先尝试删掉中文,发现无效,然后在pom.xml中尝试添加properties也不行,最后逐个xml把UTF-8改成了UTF8就好了,对就是去掉个减号而已. 2. 静态资源路径不正确 终于能启动tomcat了,但发

Python 代码中不能出现中文,或者不能输入中文

最后解决方案..在文件中添加固定的修改编码方式.在C:\Python27\Lib\site-packages路径下新建文件sitecustomize.py 并将如下代码放进去,重启idle 即可. # encoding=gbkimport sys reload(sys) sys.setdefaultencoding('gbk') 注意不能将gbk换成utf8或者gb18030.无效 import json import urllib2 """import urllib2 we

python 代码中log表示含义

log表示以e为底数的对数函数符号.其验证代码如下: a=np.log(np.e )print(a)print(np.e) 原文地址:https://www.cnblogs.com/tangjunjun/p/11506187.html