Python笔记(二)
在昨天学习Python之后,感觉它的的确确挺简洁,也挺容易学习。在昨天的学习中我们了解到了Python中while循环语句以及if...else语句的使用,while语句的使用格式是这样的:while express :,切记不要忘记冒号。if语句和while语句的使用类似。今天我们首先接着昨天的学习,了解Python中的for循环,break语句以及continue语句,之后再简单接触一下函数的使用。废话不多说,我觉得对编程语句的学习最好是对照代码来学习,所以我们先来看下面一段代码:
for i in range(1,10,2): #for循环的使用格式
print (i)
if i == 7 :
break
else:
print ("The for loop is over!") #这句话在for循环结束时打印,除非遇到break
在上面代码的第一行中,我们使用中看到了for循环的使用。格式为:for .. in..:先解释一下代码第一行的作用:我们声明了一个变量i,他的取值由rang()函数决定,上面表示i从1开始到10结束,其步长为2,但是不包括10。这就有点类似我们在JAVA中这样使用for循环: for(int i = 1;i < 10;i+=2) 。然后进入循环体,打印出每个i值,但是当i=7的时候,就跳出循环。这里有一点需要注意的是,如果你从for或者while循环中终止,那么任何对应的循环else块将不会被执行,也就是说,当跳出循环后,第六行将不会被执行。结果如下:

如果我们将第3,4行使用#注释掉,那么结果如下:

除了要记住上面所说的遇到break语句所产生的不同结果之外,还应该记住,else部分是可选的,如果包含else语句,那么它总是在循环结束执行一次。下面再来看看continue语句,Python中的continue语句和其他语言中(比如JAVA,C....)的continue语句作用是一样的,所以很好理解。它的作用就是跳过当前循环块中剩余的语句,然后继续执行下一轮循环。请看下面代码:
while True :
s = input('''Enter something : ''')
if s == 'q':
break
if len(s) < 3:
print("string length too short.try again.")
continue
print ("The string length is :",len(s)) #len()用来求出s的长度
print ("Done!")
在上面代码中,提示用户键入一些东西,如果键入字符'q',那么将会跳出循环,如果不是,那么将判断用户键入的字符串长度,如果长度小于3,用户会得到提示,并结束本次循环,不会打印出字符串的长度,如果长度大于3,那么用户会得到字符串的长度。运行结果如下:
到此我们已经了解了Python中三种控制流:if,while,for,以及与它们相关的break和continue语句。它们不仅在其他语言中需要熟练掌握,而且在Python中需要熟练掌握的。不需要死记硬背,和你之前熟悉的任何一门语言关联记忆,记住不同之处就很好掌握了。
下面我们来开始了解Python中的函数。在Python中定义一个函数使用关键字def,后面跟一个函数名,然后一对圆括号,括号中可以有参数,然后以冒号结束。先上一段比较复杂的代码,它的作用是将用户输入的十进制数转为对应的二进制表示。如果不明白这个算法的,可以参看我之前的一篇博客《十进制转二进制》。下面是Python代码:
#定义函数
def tobinary(number):
n = number % 2
if number >= 2:
tobinary(number >> 1)
out = chr(ord('')+n)
#chr()将ascii码转为对应的字符
#ord()将字符转为对应的ascii码
print ("%c"%(out),end='') #end控制打印间隔 while True:
s = input('''Enter a number:('q' to quit)''')
if s == 'q':
break
elif s.isdigit():
tobinary(int(s))
else:
print ("your input is not correct!")
print(end = '\n') print ('Game over !')
在上面代码第二行中我们使用关键字def定义了一个函数tobinary,它接收一个参数。函数的作用就是将这个参数二进制数打印输出。关于chr()和ord()函数,以及print()中的end,请参看注释。接下来进入while循环,我们判断用户输入的是否为'q',如果是,则退出程序。如果不是,我们再判断用户输入的字符串是否为数字(使用string中的isdigit()函数),如果是数字,那么进入我们定义的函数,将其二进制表示打印。如果用户输入不是数字,则提示用户输入不合法。运行结果如下:
上面的代码演示了如何定义并使用函数。还是比较简单。下面说说函数参数。在Python中,我们不仅使参数拥有默认值,也可以指定关键参数。所谓默认参数值,就是我们在调用该函数的时候,可以不对其赋值,而让它使用我们设置的默认值。请看下面代码:
def say(message,times = 1):
print(message * times) say('hello,')
say('hello,',5)
上面的函数中,我们将times的默认值设置为1,在第四行调用函数的时候,我们没有传入times的值,所以Python会使用我们设置的默认值1,而在第五行,我们设置了times=5,执行结果如下:

然而对于关键参数,指的是:假如我们定义的函数有多个参数,而我们只想指定其中一部分,那么我们可以通过命名来为这些参数赋值。这样做的好处是:我们不必担心参数的顺序,以及假设其他参数都用默认值,我们可以只给我们想要的参数赋值。请看下面一段代码:
def func(a,b=5,c=10):
print ('a is ',a,' and b is ',b,' and c is ',c) func(3,7)
func(25,c=24)
func(c=20,a=100)
上面的函数中,我们将b,c设置了默认值,a没有设置。在代码第4行,我们传入了两个参数,参数a将得到3,b将得到7,参数c使用默认值10;在代码第5行中,根据实参的位置,变量a得到25,b使用默认值5,c得到24;第6行代码中,我们使用关键参数来完全指定参数值,注意:尽管在函数定义中,a在c之前定义,我们仍然可以在a之前指定参数c的值。这就是关键参数指定。其运行结果如下:

最后再说一说文档字符串docstrings。它可以使帮助我们的程序文档更加简单易懂,所以应该尽量使用它。请看下面代码:
def printMax(x,y):
'''Prints the maximum of two numbers. The two values must be integers.'''
x = int(x)
y = int(y) if x > y :
print (x,'is maximum')
else:
print (y,'is maximum') printMax(10,20)
print (printMax.__doc__)
在上面函数的第一个逻辑行的字符串就是这个函数的文档字符串。我们运行结果,可以得到以下结果:
以上就是我今天所学的。欢迎各位博友多多指点。
Python笔记(二)的更多相关文章
- Python笔记(二)
python笔记 函数式编程 函数 函数是Python内建支持一种封装(将大段代码拆成函数) 通过函数的调用,可以将复制的任务分解. 函数式编程(Functional Programming) 计算机 ...
- python笔记二(数据类型和变量、编码方式、字符串的编码、字符串的格式化)
一.数据类型 python可以直接处理的数据类型有:整数.浮点数.字符串.布尔值.空值. 整数 浮点数 字符串:双引号内嵌套单引号,可以输出 i'm ok. 也可以用\来实现,\n 换行 \t tab ...
- guxh的python笔记二:函数基础
1,函数的参数 1.1,查看函数的参数类型 def run(a, *args, b, **kwargs): return a + b 可以通过如下方式查看参数类型: import inspect k ...
- python笔记二
一 运算符 1算术运算+ - * / % ** //其中%为取余,**为取幂如2**10=1024 9//4=2 需要注意的是python2.7中如9/2=4 需要正确表示,则在开头添加 fr ...
- python笔记二(mysql数据库操作)
python2.x使用MySQLdb python3.x使用pymysql代替MySQLdb 不过我使用的是python3.5,MySQLdb还是可以在python3.5使用的. #!/usr/bin ...
- Python笔记(二)查找重复元素
一.查找数列重复元素---count() >>> list = [,,,,,,,,,,,] >>> set = set(list) >>> for ...
- python 笔记二
17.进程线程 进程间通信方式:管道Pipe:队列Queue:共享内存Value.Array.Manager: 多进程同步:锁Lock.递归锁RLock.Condition(条件变量):事件event ...
- Python笔记(二十九)_模块
模块 在Python中,一个.py文件就是一个模块 if __name__ == '__main__':所有模块都有一个 __name__ 属性,__name__ 的值取决于如何应用模块 run当前文 ...
- Python笔记(二十六)_魔法方法_属性的魔法方法
属性的魔法方法 __getattribute__(self,name):当该类的属性被访问时,自动触发,是最先被触发的属性方法 __setattr__(self,name,value):当一个属性被设 ...
- Python笔记(二十四)_魔法方法_运算符的魔法方法
算数运算方法 .反运算方法 以对象A+对象B为例,都是将A作为self值,而B作为other值传入__add__(self,other)方法: 当用户输入A+B,就会调用重写的add方法: >& ...
随机推荐
- Physicals
[Physicals] The physics simulation in Sprite Kit is performed by adding physics bodies to scenes. [T ...
- POJ 2318 TOYS (计算几何,叉积判断)
TOYS Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8661 Accepted: 4114 Description ...
- poj 2239 Selecting Courses(二分匹配简单模板)
http://poj.org/problem?id=2239 这里要处理的是构图问题p (1 <= p <= 7), q (1 <= q <= 12)分别表示第i门课在一周的第 ...
- RAID对硬盘的要求及其相关
Raid 0:至少需要两块硬盘,磁盘越多,读写速度越快,没有冗余. Raid 1:只能用两块硬盘,两块硬盘的数据互为镜像(写慢,读快),一块磁盘冗余. Raid 5:至少需要3块硬盘,一块磁盘冗余. ...
- ASP.NET的分页方法(三)
第三讲是应用于MVC上面的分页,很多时候MVC要和EF表达式一起使用,但是我这个使用的最原始的ADO.NET,一样实现了这个效果.要实现这个效果首先要得到MvcPager.dll,引用之后,前台操作如 ...
- Codeforces 711 D. Directed Roads (DFS判环)
题目链接:http://codeforces.com/problemset/problem/711/D 给你一个n个节点n条边的有向图,可以把一条边反向,现在问有多少种方式可以使这个图没有环. 每个连 ...
- ZOJ1648 Circuit Board(线段相交)
裸的判断线段相交
- C++中使用接口
面向对象的语言诸如JAVA提供了Interface来实现接口,但C++却没有这样一个东西,尽管C++ 通过纯虚基类实现接口,譬如COM的C++实现就是通过纯虚基类实现的(当然MFC的COM实现用了嵌套 ...
- Android 当媒体变更后,通知其他应用重新扫描
在媒体文件改变后 发出 Intent.ACTION_MEDIA_SCANNER_SCAN_FILE广播,告知其他应用,媒体文件发生改变. 具体代码片段: File oldFile = new File ...
- 监听UITextFiled输入文字长度的变化
需求:如果UITextFiled文字的长度大于零,改变一个按钮的颜色 1.一开始想到的当然是UITextFiled的代理方法,但是在UITextFiled的代理方法中并没有监听这个的这一选项!!! 2 ...