Python2.7绝地求生新手入门求解答

2773人阅读
Python(3)
声明:以下代码都是在Python2.7+Winxp中执行通过
1.try语句的两种形式
&statement&
except&exceptname1&:#出现exceptname1的异常,执行以下语句
&statement&
except&exceptname2&:#出现exceptname2的异常,执行以下语句
&statement&
else: & & & & & & & & &#一切正常,执行else语句
&statement&
&statement&
except: & &#不指定具体异常名,则捕获所有的异常
&statement&
finally: & &#不论异常发生与否,都会执行Finally
&statement&
#-*-coding:utf-8-*-
list = [1,2]
except IndexError: &#捕获数组越界的错误
print &Out of index!&
print &No Error!&
#-*-coding:utf-8-*-
list = [1,2]
#下标越界error
except : #只要有error ,就会被执行
print &Error eccoured!&
print &No error !&#没有error的时候会被执行
print &Finally will be invoked everytime& #不论有没有error,都会被执行
2.常用异常名
AttributeError 调用不存在的方法引发的异常
EOFError 遇到文件末尾引发的异常
ImportError 导入模块出错引发的异常
IndexError 列表越界引发的异常
IOError I/O 操作引发的异常,如打开文件等
KeyError 使用字典中不存在的关键字
NameError 使用不存在的变量名
TabError 语句块缩进不正常
ValueError 搜索List中不存在的值引发的异常
ZeroDivisionError 除数为零
3.raise引发异常
#-*-coding:utf-8-*-
#主动raise异常
raise myError &#主动调用一个异常
except myError: #自定义异常
print &My own excepiton!&
print &No Error!&
#-*-coding:utf-8-*-
#自定义Exception,主动raise 异常
class myException(Exception): #继承Exception类
def __init__(self,errmsg):#初始化,可以接收参数data
self.errmsg=errmsg
def __str__(self): #重载__str__方法
return &error occured ,msg is :&+self.errmsg
raise myException,&error msg& &#主动调用一个异常
except myException,errmsg: #自定义异常
print str(errmsg) &#这个方法会调用__str__方法,输出error occured ,msg is :error msg&
print &No Error!&
4.使用pdb模块进行调试
run(statement[,globalse[,locals]])
statement:要调试的语句块
globals:可选参数,设置statement运行的全局环境变量
locals:可选参数,设置statement运行的局部环境变量
本人使用eclipse+pydev进行开发调试,这个……还是略了,不喜欢这种调试方式
另外,也可以使用pythonWin 进行开发调试
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:319312次
积分:2698
积分:2698
排名:第13376名
原创:48篇
评论:31条
(1)(2)(2)(1)(1)(1)(3)(5)(1)(2)(1)(2)(1)(1)(4)(2)(2)(1)(1)(1)(1)(1)(1)(1)(2)(2)(2)(1)(2)(3)(1)(2)(2)(1)Python2.7新手求解答【python吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:147,422贴子:
Python2.7新手求解答收藏
共4道题目,我自己尝试一下做,可是没有思路,连题目都看不明白,求大神们解答,或者提供思路。谢谢O(∩_∩)O
51CTO学院11年行业品牌,1400万用户选择,中国专业IT技能学习平台,python.通过在线学习的方式,帮助广大技术人员实现技能提升,高薪就业的职业梦想,python.
求学神解答啊
import cmathimport mathimport sysdef get_float(msg, allow_zero):
while x is None:
x = float(input(msg))
if not allow_zero and abs(x) & sys.float_info.epsilon:
print(&zero is not allowed&)
except ValueError as err:
print(err)
return xprint(&ax\N{SUPERSCRIPT TWO} + bx + c = 0&)a = get_float(&enter a: &, False)b = get_float(&enter b: &, True)c = get_float(&enter c: &, True)x1 = Nonex2 = Nonediscriminant = (b ** 2) - (4 * a * c)if discriminant == 0:
x1 = -(b / (2 * a))else:
if discriminant & 0:
root = math.sqrt(discriminant)
else: # discriminant & 0
root = cmath.sqrt(discriminant)
x1 = (-b + root) / (2 * a)
x2 = (-b - root) / (2 * a)equation = &{0}x\N{SUPERSCRIPT TWO} &.format(a)if b != 0:
equation += &- {0}x &.format(abs(b))
equation += &+ {0}x &.format(b)if c != 0:
equation += &- {0} &.format(abs(c))
equation += &+ {0} &.format(c)equation += &= 0 \N{RIGHTWARDS ARROW} x = {0}&.format(x1)if x2 is not None:
equation += & or x = {0}&.format(x2)print(equation)
没有人吗?
诚信服务,客户至上:
这里递归结束的条件就是fromlist只剩下一个元素时, 但是它把所有的子集结果都存储到了tolist里面, 所以返回的时候,只需要return(或者使用return true 也是可以的, 不影响结果),而不需要return子集
登录百度帐号推荐应用将linux默认python升级到2.7.4版本
第一步:下载python2.7.4版本源码:
[aa@localhost ~]$ tar jxvf Python-2.7.4.tar.bz2
[niuxl@localhost ~]$ cd Python-2.7.4
[niuxl@localhost Python-2.7.4]$ ls
config.guess&
configure&&&&
Demo& Grammar&
install-sh& LICENSE&
Makefile.pre.in& Modules&
PCbuild&&&&&&&
config.sub&&&
configure.ac&
Doc&& Include&
Lib&&&&&&&&
Misc&&&&&&&&&&&&
pyconfig.h.in& README&
[niuxl@localhost Python-2.7.4]$ su -
[root@localhost ~]# mkdir /usr/local/python2.7.4
[root@localhost ~]# cd /home/
[root@localhost home]# cd niuxl/Python-2.7.4
[root@localhost Python-2.7.4]# ls
config.guess&
configure&&&&
Demo& Grammar&
install-sh& LICENSE&
Makefile.pre.in& Modules&
PCbuild&&&&&&&
config.sub&&&
configure.ac&
Doc&& Include&
Lib&&&&&&&&
Misc&&&&&&&&&&&&
pyconfig.h.in& README&
setup.py&&&&
编译之前,需要先安装zlib包:
[root@localhost Python-2.7.4]# yum install zlib zlib-devel
[root@localhost Python-2.7.4]# ./configure
--prefix=/usr/local/python2.7.4
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for --enable-universalsdk... no
checking for --with-universal-archs... 32-bit
checking MACHDEP... linux2
checking EXTRAPLATDIR...
checking for --without-gcc... no
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/home/niuxl/Python-2.7.4':
configure: error: no acceptable C compiler found in $PATH
缺少c编辑器
安装c编辑器:
[root@localhost Python-2.7.4]# yum install gcc
注:有一个选择y和n的地方,提示是否继续下载,输入y,回车即可!
gcc安装完成
继续编译python
[root@localhost Python-2.7.4]# ./configure
--prefix=/usr/local/python2.7.4
ok编译成功
[root@localhost Python-2.7.4]# make
&& make install
[root@localhost Python-2.7.4]# python -V
Python 2.4.3
目前版本依然是2.4.3,现在开始升级python,
查看python命令所在目录
[root@localhost Python-2.7.4]# whereis python
python: /usr/bin/python2.4 /usr/bin/python /usr/lib/python2.4
/usr/include/python2.4 /usr/share/man/man1/python.1.gz
将/usr/bin/python 的软连接修改为python2.4.3
[root@localhost Python-2.7.4]# mv /usr/bin/python
/usr/bin/python2.4.3
[root@localhost Python-2.7.4]# python
-bash: /usr/bin/python: 没有那个文件或目录
python命令找不到,这时只需要将版本python2.7.4命令加入环境变量即可!
修改/etc/profile加入如下两行:
PATH=$PATH:/usr/local/python2.7.4/bin
export PATH
[root@localhost Python-2.7.4]# source /etc/profile
[root@localhost Python-2.7.4]# python -V
Python 2.7.4
当然也可以创建2.7.4版本的python的软连接:/usr/bin/python
[root@localhost ~]# ln -s /usr/local/python2.7.4/bin/python
/usr/bin/python
ok,python升级完成
到现在为止,还有最后一件事需要做,那就是yum与python的兼容问题:
[root@localhost pipe]# vi /usr/bin/yum
#!/usr/bin/python
第一行修改为
#!/usr/bin/python2.4.3(即原始的python变更后的名字)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。python2.7学习记录 - froid - 博客园
随笔 - 102, 文章 - 0, 评论 - 0, 引用 - 0
一.两个学习网址(2.7已经过时,建议直接学习3)
http://blog.csdn.net/longxibendi/article/details/
http://ww/wiki/095c955c1e6d8bbfac
二.开发工具:pycharm
破解参考/evlon/p/4934705.html
快捷键/zhangpengshou/p/3555767.html
三.python切换到指定目录:使用os包的chdir函数能够改变当前工作路径,linux和windows操作系统中并没有区别。
import&os#获取当前工作目录&&&os.getcwd()#更改当前工作目录&&&os.chdir('d:\')&&&os.getcwd()
四.打印中文:开头加上#coding=utf-8 就ok了
1.&&&python hello.pyFile "&stdin&", line 1 python hello.pySyntaxError:invalid syntax出错是因为你已经进入python解释器,而不是 在cmd环境里如果要运行helloworld.py这个文件,你需要在cmd里直接运行。显示是这样的C:\Users\Administrator\Desktop&python hello.py
2.raw_input,可以让用户输入字符串,并存放到一个变量里。比如输入用户的名字:&&& name = raw_input(),3+的版本用input()代替了raw_input()name = raw_input('please enter your name: ')print 'hello,', name
3.用r''表示''内部的字符串默认不转义用'''...'''的格式表示多行内容空值是Python里一个特殊的值,用None表示
在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。
理解变量在计算机内存中的表示也非常重要。当我们写:a = 'ABC'时,Python解释器干了两件事情:在内存中创建了一个'ABC'的字符串;在内存中创建了一个名为a的变量,并把它指向'ABC'。也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据。Python支持多种数据类型,在计算机内部,可以把任何数据都看成一个&对象&,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。
在Python中,通常用全部大写的变量名表示常量
整数除法永远是整数,即使除不尽。要做精确的除法,只需把其中一个整数换成浮点数做除法就可以。。3+的整型除法返回浮点数,要得到整型结果用//
由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码。
全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
现在,捋一捋ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。
如果把ASCII编码的A用Unicode编码,只需要在前面补0就可以,因此,A的Unicode编码是00001。新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
所以,本着节约的精神,又出现了把Unicode编码转化为&可变长编码&的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。
现在计算机系统通用的字符编码工作方式:在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件;浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器。
七、一些存储结构
1.Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。用len()函数可以获得list元素的个数。用-1做索引,直接获取最后一个元素。list里面的元素的数据类型可以不同,list元素也可以是另一个list,空list如 L = []长度为0追加 classmates.append('Adam')插入 classmates.insert(1, 'Jack')删除list末尾的元素,用pop()方法 classmates.pop()删除指定位置i的元素,用pop(i)方法 classmates.pop(1)某个元素替换成别的元素,可以直接赋值给对应的索引位置 classmates[1] = 'Sarah'
2.另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改。tuple的每个元素的指向永远不变。
3.dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。为什么dict查找速度这么快?因为dict的实现原理和查字典是一样的。假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。第二种方法是先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字,无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。dict就是第二种实现方式,给定一个名字,比如'Michael',dict在内部就可以直接计算出Michael对应的存放成绩的&页码&,也就是95这个数字存放的内存地址,直接取出来,所以速度非常快。你可以猜到,这种key-value存储方式,在放进去的时候,必须根据key算出value的存放位置,这样,取的时候才能根据key直接拿到value。
和list比较,dict有以下几个特点:查找和插入的速度极快,不会随着key的增加而增加;需要占用大量的内存,内存浪费多。而list相反:查找和插入的时间随着元素的增加而增加;占用空间小,浪费内存很少。所以,dict是用空间来换取时间的一种方法。这个通过key计算位置的算法称为哈希算法(Hash)。要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key。最常用的key是字符串。
为什么dict需要的内存要比list的多 内存中是怎么保存key与value的:列表应该可以数组,可以链表,因为它可以存取,也可以添加删改。 字典的话,应该是链表的数组吧。key值应该是哈希表,value存放应该没有关系,根据key值可以计算出value 存放的地址,那么必然在key值里还存放着另外的内容,即特别的内容来计算对应value的内存地址,所以需要的空间就多-静水汤汤
4.set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key,重复元素在set中自动被过滤。通过add(key)方法添加元素到set中,通过remove(key)方法删除元素。set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作。
1.抽象是数学中非常常见的概念,举个例子: 计算数列的和,比如:1 + 2 + 3 + ... + 100,写起来十分不方便,于是数学家发明了求和符号&借助抽象,我们才能不关心底层的具体计算过程,而直接在更高的层次上思考问题。写计算机程序也是一样,函数就是最基本的一种代码抽象的方式。函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个&别名&。
2.在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。我们以自定义一个求绝对值的my_abs函数为例:def my_abs(x):&&& if x &= 0:&&&&&&& return x&&& else:&&&&&&& return -x
3.如果想定义一个什么事也不做的空函数,可以用pass语句:def nop():&&& passpass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。pass还可以用在其他语句里,比如:if age &= 18:&&& pass缺少了pass,代码运行就会有语法错误。
4.对参数类型做检查,只允许整数和浮点数类型的参数。数据类型检查可以用内置函数isinstance实现def my_abs(x):&&& if not isinstance(x, (int, float)):&&&&&&& raise TypeError('bad operand type')&&& if x &= 0:&&&&&&& return x&&& else:&&&&&&& return -x
5.在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。
6.使用默认参数有什么好处?最大的好处是能降低调用函数的难度。如学生注册时不需要提供年龄和城市,只提供必须的两个姓名和密码,只有与默认参数不符的学生才需要提供额外的信息。默认参数必须指向不变对象!原因:Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。如默认参数是[],但是函数似乎每次都&记住了&上次添加了'END'后的list。def add_end(L=[]): &&& L.append('END')&&& return L
7.可变参数:Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去。def calc(*numbers):&&& sum = 0&&& for n in numbers:&&&&&&& sum = sum + n * n&&& return sum
8.可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。示例 def person(name, age, **kw)关键字参数有什么用?它可以扩展函数的功能。比如,在person函数里,我们保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。
9.参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。如def func(a, b, c=0, *args, **kw)在函数调用的时候,Python解释器自动按照参数位置和参数名把对应的参数传进去。对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。&&&func(1, 2, 3, 'a', 'b', x=99)a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 99}
10.尾递归防止栈溢出,没好好看。/wiki/095c955c1e6d8bbfac/2dc137b7e685000}

我要回帖

更多关于 绝地求生新手教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信