Python 学习---------Day4

第十章 Python语句简介
Python的代码书写要求,以及换行等
语句可以扩越多行,只要将其封闭在圆括号内,方括号内或大括号内即可,可以使用分号终止.
用\可以允许我们跨越多行
一个简单的交互式循环
while True:
input=raw_input("Please input text")
if input==‘stop‘:
break
print input.upper()

while True:
input=raw_input("Please input text:")
if input==‘stop‘:
break
elif not input.isdigit():
print ‘bad‘*5
else:
print int(input)**2
print bye

while True:
reply=raw_input(‘Enter text:‘)
if input==‘stop‘:
break
try:
num=int(input)**2
except:
print ‘bad‘*8
else:
print num
print ‘bye‘

第十一章 赋值,表达式和打印
赋值语句
赋值语句建立对象引用值
变量名在首次赋值时候会被创建
变量名在引用前必须先赋值
隐式赋值语句
赋值语句形式
spam=‘spam‘
spam,ham=‘yum‘,‘YUM‘
[spam,ham]=[‘yum‘,‘YUM‘]
a,b,c,d=‘spam‘
spam=ham=‘lunch‘
spams+=42
多目标赋值以及共享引用时候
注意引用的对象是可变还是不可变
变量命名规则 通用
以单一下划线开头的变量名不会被from module import *语句导入
前后有下划线的变量名是系统定义的变量名,对解释器有特殊意义
以两下划线开头,但结尾没有两个下划线的变量名,是类的本地变量
通过交互模式运行时候 只有单个下划线的变量名会保存最后表达式的结果
重定向输出流
print x
等价于
import sys
sys.stdout.write(str(x)+‘\n‘)

import sys
sys.stdout=open(‘log.txt‘,a)
...
print x,y,z

log=open(‘log.txt‘,‘w‘)
print>>log,1,2,3
print>>log,4,5,6
log.close()

第十二章 if测试
通用格式
if:

elif:

else:
字典默认get
branch={‘soam‘:1.25,
‘ham‘:1.99,
‘eggs‘:0.99}
print branch.get(‘ham‘,‘bad‘)
print branch.get(‘eggs‘,‘bad‘)
真值测试
2 and 3,3 and 2
返回(3,2)
因为第一行的操作数都是真,所以Python会计算两侧,并返回右侧的对象,在第二个测试中,左侧的操作数为假,所以Python会在该处停止并将其返回作为测试结果
if/else三元表达式
A=Y if X else Z

第十三章 while和for循环
while循环
例子
x=‘spam‘
while x:
print x,
x=x[1:]

a=0;b=10
while a<b:
print a,
a+=1

break 跳出最近所在的循环
continue 调到最近所在循环开头处
pass 什么事也不做,空占位语句
循环else块
只有当循环正常离开时候才会执行

while x
if match(x[0]):
print ‘ni‘
break
x=x[1:]
else:
print ‘not found‘

while True:
x=next()
if not x:break
....

x=1
while x:
x=next()
if x:
...
x=next()
while x:
...
x=next()

for循环
for x in [‘spam‘,‘eggs‘,‘ham‘]:
print x,

sum=0
for x in [1,2,3,4]:
sum=sum+x

prod=1
for item in [1,2,3,4]:
prod*=item

s=‘lumberjack‘
t=(‘and‘,‘I\‘m‘,‘okay‘)
for x in s:
print x,
for x in t:
primt x,

在for循环中的元组赋值
T=[(1,2),(3,4),(5,6)]
for (a,b) in T:
print a,b

items=[‘aaa‘,111,(4,5),2.01]
tests=[(4,5),3.14]
for key in tests:
for item in items:
if item==key:
print key,"was found"
break
else:
print key,"not found"

文件扫描
file=open(‘test.txt‘,‘r‘)
print file.read()

file=open(‘text.txt‘)
while True:
line=file.readline()
if not line:
break
print line,

file=open(‘test.txt‘,‘rb‘)
while True:
chunk=file.read(10)
if not chunk:
break
print chunk,

for line in open(‘test.txt‘).readline():
print line

迭代器
for x in [1,2,3,4]:
print x**2
for x in (1,2,3,4):
print x**3,
for x in ‘spam‘:
print x*2,
文件迭代器
f=open(‘test.py‘)
f.readline()
f.eardline()

f=open(‘test.py‘)
f.next()
f.next()

for line in open(‘test.txt‘):
print line.upper()

迭代器在Python中是以C语言的速度运行的,而while循环是通过Python虚拟机器运行Python字节码的.

其他内置类型迭代器
L=[1,2,3]
I=iter(L)
I.next()
I.next()

D={‘a‘:1,‘b‘:2,‘c‘:3}
for key in D.keys():
print key,D[key]

for key in D:
print key,D[key]

字典有一个迭代器,在迭代环境中,会自动依次返回一个键,所以完全不需要在内存中实际建立键列表

in成员关系测试,map内置函数以及其他内置工具也采用了迭代协议
upper=[line.upper() for line in open(‘test.py‘)]
map(str.upper(),open(‘test.py‘))
‘y=2\n‘ in open(‘test.py‘)
sorted(open(‘test.py‘))

L=[1,2,3,4,5]
for i in range(len(L)):
L[i]+=1

并行遍历:zip和map
L1=[1,2,3,4]
L2=[5,6,7,8]
zip(L1,L2)
for (x,y) in zip(L1,L2):
print x,y,‘--‘,x+y
当参数长度不同的时候,zip会以最短序列的长度为准来阶段所得到的元组

使用zip来构造字典
key=[‘spam‘,‘eggs‘,‘toast‘]
vals=[1,3,5]
D={}
for (k,v) in zip(key,vals):
D[k]=v

D1=dict(zip(key,vals))

产生偏移和元素:enumerate
s=‘spam‘
for (offer,item) in enumerate(s):
print item,‘appears at offset‘,offset

E=enumerate(s)
E.next()
E.next()

列表解析:初探
L=[x+10 for x in L]
lines=[line.rstrip() for line in lines]

扩展列表解析语法
lines=[line.rstrip() for line in open(‘test.py‘) if line[0]==‘p‘]
res=[]
for line in open(‘test.py‘):
if line[0]==‘p‘:
res.append(line.rstrip())

时间: 2024-10-13 10:54:45

Python 学习---------Day4的相关文章

python学习day4软件目录结构规范

为什么要设计好目录结构? 参考:http://www.cnblogs.com/alex3714/articles/5765046.html "设计项目目录结构",就和"代码编码风格"一样,属于个人风格问题.对于这种风格上的规范,一直都存在两种态度: 1.一类同学认为,这种个人风格问题"无关紧要".理由是能让程序work就好,风格问题根本不是问题: 2.另一类同学认为,规范化能更好的控制程序结构,让程序具有更高的可读性: 我是比较偏向于后者的,因为

python 学习day4

函数装饰器 内置函数 编译字符串成为python代码 # s = "print(123)"# compile(s, "<string>", "exec") 执行代码.字符串.表达式 # exec("print(1+2+3)")  #代码与字符串都可以执行,但是无返回值(无返回值)# print(eval("1+2+3"))  #可以执行表达式,将执行结果当作返回值返回(有返回值) dir(dic

python学习day4之路文件的序列化和反序列化

json和pickle序列化和反序列化 json是用来实现不同程序之间的文件交互,由于不同程序之间需要进行文件信息交互,由于用python写的代码可能要与其他语言写的代码进行数据传输,json支持所有程序之间的交互,json将取代XML,由于XML格式稍微比较复杂.现在程序之间的交互都是用json来进行文件信息的交互. 在使用json序列化和反序列化的时候,dump一次,就要load一次,不能操作. json序列化的过程,就是写入文件中,让另外一个编程语言进行调用: import json in

Python学习--day4

一.装饰器 装饰器本质上也是函数,其功能是为被装饰的函数添加附加功能.装饰器的使用原则:(1)不能修改被装饰函数的源代码:(2)不能修改被装饰函数的调用方式,总之,装饰器对被装饰函数来说是透明的.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓存.权限校验等场景. 1.预备知识: (1)高阶函数:把一个函数名当作实参传递给另一个函数,返回值中包含函数名 (2)嵌套函数:在一个函数体内声明一个函数,不是只调用一个函数 (3)装饰器=高阶函数+嵌套函数 2. 简单装饰器 假如要统计

Python学习Day4

元组tupe 元组被称为只读列表,即数据可以被查询,但不能被修改,所以字符串的切片同样适用于元组. 列表list 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表的增加: li = ['alex','wusir','egon','女神','taibai'] li.append('大神') #增加到列表最后 >>>['alex', 'wusir', 'egon', '女神', 'taibai', '大神'] li.a

python学习day4(列表,元组)

一. 列表(增删改查)   列表可以装大量的数据,不限制数据类型. 表示为[ ]. 每一个元素之间用' , '隔开.   列表也有索引和切片 1. list: 增加: 1. append("x") 向列表中增加一个元素x. 默认添加到列表末尾   2. instert(1,"麻花藤") 将元素添加到某一个位置   3. extend("马云","麻花藤","李嘉诚") 迭代添加. 默认添加末尾 lst =

python学习:程序控制结构·作业20141219

Python学习:程序控制结构 20141219 编程环境: windows 7 x64 python 2.7.6 题目: 1 编写程序,完成下列题目(1分) 题目内容: 如果列出10以内自然数中3或5的倍数,则包括3,5,6,9.那么这些数字的和为23.要求计算得出任意正整数n以内中3或5的倍数的自然数之和. 输入格式: 一个正整数n. 输出格式: n以内中3或5的倍数的自然数之和. 输入样例: 10 输出样例: 23 时间限制:500ms内存限制:32000kb n = int(raw_in

python学习第二天

python学习的第二天就是个灾难啊,这天被打击了,自己写的作业被否认了,不说了,写博客还是个好习惯的,要坚持下去,就不知道能坚持到什么时候.呵呵!!! 这天教的知识和第一天的知识相差不大,区别在于比第一天讲的更细了(我们是两个老师教的,风格是不一样的),这次也写那些比较细的知识点. python的简介 (1)你的程序一定要有个主文件. (2)对于python,一切事物都是对象,对象基于类创建.#似懂非懂,不过有那么点似懂. 知识点 #__divmod__ 会把两个数字相除的商和余数以元组的方式

[Python 学习] 二、在Linux平台上使用Python

这一节,主要介绍在Linux平台上如何使用Python 1. Python安装. 现在大部分的发行版本都是自带Python的,所以可以不用安装.如果要安装的话,可以使用对应的系统安装指令. Fedora系统:先以root登入,运行 yum install python Ubuntu系统:在root组的用户, 运行 sudo apt-get install python 2. 使用的Python的脚本 Linux是一个以文件为单位的系统,那么我们使用的Python是哪一个文件呢? 这个可以通过指令

python学习之最简单的用户注册及登录验证小程序

文章都是从我的个人博客上粘贴过来的哦,更多内容请点击 http://www.iwangzheng.com 正如很多同学所知道的,楼主开始学习python了,前进的道路曲曲折折,有荆棘也有陷阱,从最简单的小程序写起,每天练习,将python进行到底. 有一点比较别扭的就是python的换行之后空四个空格,ruby都是两个,并且python在方法和循环语句的第一句都要加冒号 mysql> show create table user; mysql> alter table user add sal