python三天简单学习Day2
循环语句:
while循环:
while循环语法结构:
当需要语句不断重复执行时,可以使用while循环
#################################
#!/usr/bin/env python
#coding: utf-8
i=1
while i<=5:
print i
i+=1
#################################
break语句:
结束当前循环然后跳转到下条语句
写程序的时候应尽量避免重复的代码,在这种情况下可以使用while-break结构
#################################
#!/usr/bin/env python
#coding: utf-8
name=raw_input('username:')
while name!='tom':
name=raw_input('username:')
#可以替换为
while True:
name=raw_input('uaername:')
if name='tom':
break
#################################
continue语句:
当遇到continue语句时,程序会终止当前循环,并忽略剩余语句,然后回到循环顶端
如果仍然满足循环条件,循环语句继续执行,否则退出循环
#################################
#!/usr/bin/env python
#coding: utf-8
#计算2+4+6+……+100
sum100=0
while counter<=100:
counter=0
counter+=1
if counter % 2:
continue
sum100+=counter
print "总和是%d" %sum100
#################################
else语句:
else子句只在循环完成后执行,break语句也会跳过else块
#################################
#!/usr/bin/env python
#coding: utf-8
sum10=0
i=1
while i<=10:
sum10+=i
i+=1
else:
print sum10
#################################
for循环:
for循环语法结构:
python中的for接受可迭代对象(例如序列或迭代器)作为参数,每次迭代其中的一个元素
与while循环一样,支持break、continue、else语句
一般情况下,循环次数未知采用while循环,循环次数可知采用for循环
#################################
x='hello xiyuan'
for i in x:
print i //以每一个字母作为变量输出
#################################
range函数:
自动生成数列
for循环常与range函数一起使用,range函数提供循环条件
range函数的完整语法为:
range(start,end,step=1)
#################################
print range(5) ---> [0,1,2,3,4]
print range(1,5) ---> [1,2,3,4]
print range(1,5,2) ---> [1,3]
print range(1,5,3) ---> [1,4]
#################################
xrange函数:
xrange()类似range(),不过当你有一个很大的范围列表时,xrange()可能更为合适,因为它不会在内存里创建列表的完整拷贝
xrange只能被用在for循环中,在for循环外使用它没有任何意义
xrange性能远高出range,因为它不会生成整个列表
#################################
print xrange(5) ---> xrange(5)
for i in xrange(5):
print i ---> 输出结果为0-4五个元素
#################################
斐波那契数列
num=int (raw_input('请输入要计算的月份:'))
tuzi=[0,1]
for i in xrange(num):
tuzi.append(tuzi[-1]+tuzi[-2])
print '第%d个月共有%d只兔子'%(num,tuzi[-1])
print tuzi
#################################
列表解析:
用来动态的创建列表,可用于python多进程解析
语法:[ expr for iter_var in iterable ]
这个语句的核心是for循环,它迭代iterable对象的所有条目
expr应用于序列的每个成员,最后的结果值是该表达式产生的列表
#################################
print [5 for i in range(5)] ---> [5, 5, 5, 5, 5]
print [i for i in range(5)] ---> [0, 1, 2, 3, 4]
#################################
习题扩展:
#################################
#'''随机密码'''
import string
import random
char=string.letters+string.digits+string.punctuation
num=int (raw_input('请输入密码长度:'))
passwd=''
for i in range(num):
passwd+=random.choice(char)
print passwd
#################################
文件对象:
文件打开方式:
open及file内建函数:
作为打开文件之门的"钥匙",内建函数open()以及file()提供了初始化输入/输出(I/O)操作的通用接口,成功打开文件后会返回一个文件对象,否则引发一个错误
open()方法和file()方法可以完全相互替换
基本语法:
file_object=open(dile_name,access_mode='r',buffering=-1)
文件对象访问模式:
文件模式 操作
r 以读方式打开(文件不存在则报错)
w 以写方式打开(文件存在则清空,不存在则创建)
a 以追加模式打开(必要时创建新文件)
r+ 以读写模式打开(文件不存在则报错)
w+ 以读写模式打开(文件存在则清空,不存在则创建)
a+ 以读写模式打开(追加模式,必要时创建新文件)
文件输入:
read方法:
read()方法用来直接读取字节到字符串中,作多读取给定数目的字节
如果没有给定size参数(默认值-1)或者size值为负,文件将被读取直至末尾
语法格式:
data=fobj.read()
print data
readline方法:
读取文件的一行(读取下个行结束符之前的所有字节)
然后整行,包括行结束符,作为字符串返回
如果没有给定size参数(默认值-1)或者size值为负,文件将被读取直至行结束符
语法格式:
data=fobj.readlines()
print data
readlines方法:
读取所有(剩余的)行然后把他们作为一个字符串列表返回
语法格式:
data=fobj.readlines()
print data
文件迭代:
如果需要逐行处理文件,可以结合for循环迭代文件
迭代文件的方法与处理其他序列类型的数据类似
语法格式:
fobj=open('star.py')
for eachline in fobj:
print eachline
知识点练习:
#################################
data=open('/etc/hosts')
print data.readline()
print data.read()
data.seek(0)
print data.read()
data.close()
#################################
文件输出:
write方法:
write()内建方法功能与read()和readline()相反。它把含有文本数据或二进制数据块的字符串写入到文件中去
写入文件时不会自动添加行结束标志,需要手工输入
语法格式:
fobj.write('Hello World!\n')
writelines方法:
与readlines()一样,writelines方法是针对列表的操作
它接受一个和字符串列表作为参数,将它们写入文件
知识点练习:
#################################
data=open('/root/new.txt','w')
data.writelines("abcdefg\n")
data.writelines("testtttt\n")
data.flush()
data.writelines("cccccccc\n")
data.close()
####测试文件内容
fi=open('/root/new.txt')
print fi.read()
#################################
习题扩展:
#################################
#'''写一个cp(复制)文本程序'''
f1=raw_input('请输入要复制的文件:')
f2=raw_input('请输入新的文件:')
data=open(f1)
new=open(f2,'w')
for i in data:
new.writelines(i)
data.close()
new.close()
####查看新文件内容
tmp=open(f2)
print tmp.read()
tmp.close()
#################################
函数:
函数基本操作:
函数基本概念:
函数是对程序逻辑进行结构化或过程花的一种编程方法,将整块代码巧妙的隔离成易于管理的小块,通常函数都是用于实现某一功能
将重复的代码放到函数中而不是进行大量的拷贝,这样既能节省空间,也有助于保持一致性
创建函数:
函数使用def语句来创建,语法如下:
def function_name(arguments):
"function_documentation_string"
function_body_suite
标题行由def关键字,函数的名字,以及参数的集合(如果有的话)组成
def子句的剩余部分包括了一个虽然可选但是强烈推荐的文档字串,和必需的函数体
调用函数:
通过以对圆括号调用函数,如果没有加圆括号,则只是对函数的引用
def foo():
print 'hello'
foo() ---> hello
foo ---> <function foo at 0x7ff2328967d0>
函数的返回值:
多数情况下,函数并不直接输出数据,而是向调用者返回值
函数的返回值使用return关键字,没有return的话,函数默认返回None
def foo():
res=3+4
i=foo()
print i ---> None
函数参数:
定义参数:
形式参数:
函数定义时,紧跟在函数名后(圆括号内)的参数被称为形式参数,简称形参。由于它不是实际存在变量,所以又称为虚拟变量
实际参数:
在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为"是及参数",简称实参
传递参数:
调用函数时,实参的个数需要与形参个数一致,实参将依次传递给形参
def foo(x,y):
print 'x=%d,y=%d' %(x,y)
foo(3,4) ---> x=3,y=4
位置参数:
与shell脚本类似,程序名以及参数都以位置参数的方式传递给python程序
使用sys模块的argv列表接收
#!/usr/bin/env python
import sys
print sys.argv
print sys.argv[2]
print sys.argv[1],sys.argv[2]
./args.py hello world --->
['./while.py','hello','world']
world
hello world
默认参数:
默认参数就是声明了默认值的参数,因为给参数赋予了默认值,所以在函数调用时,不向该参数传入值也是允许的
def pstar(num=10):
print '*'*num
pstar() ---> **********
pstar(20) ---> ********************
习题扩展:
#################################
#'''计算器-函数(参数)'''
def jsq(x,y):
print 'x+y=',x+y
print 'x-y=',x-y
print 'x*y=',x*y
print 'x/y=',x/y
jsq(3,4)
#################################
模块:
定义模块:
模块基本概念:
模块是从逻辑上组织python代码的形式
当代码量变得相当大的时候,最好把代码分成一些有组织的代码段,前提是保证他们的彼此交互
这些代码片段相互间有一定的联系可能是一个包含数据成员和方法的类,也可能是一组相关单笔批独立的操作函数
创建模块:
模块物理层面上组织模块的方法是文件,每一个以.py作为结尾的python文件都是一个模块,模块名称切忌不要与系统中已存在的模块重名,模块文件名字去掉后面的扩展名(.py)即为模块名
使用模块:(目录/usr/lib64/python2.7/下有207个模块可以直接使用)
导入模块(import):
使用import导入模块,模块被导入后,程序会自动生成pyc的字节码文件以提升性能
模块属性通过"模块名.属性"的方法调用,如果只需要模块中的某些属性,也可以单独导入
import sys
import os,string
string.digits ---> 0123456789
from random import randint
randint(1,10) ---> 5
模块加载(load):
一个模块只能被加载一次,无论它被导入多少次,只加载一次可以阻止多重导入时代码被多次执行,如果两个文件相互导入,防止了无限的相互加载,模块加载时,顶层代码会自动执行,所以将函数放入模块的顶层是良好的编程习惯
模块导入的特性:
模块具有一个_name_特殊属性,当模块文件直接执行时,_name_的值为'_main_'
当模块被另一个文件导入时,_name_的值就是该模块的名字
# vim foo.py
print __name__
./foo.py ---> __main__
# python
>>>import foo ---> foo
共同学习,写下你的评论
评论加载中...
作者其他优质文章