条件结构:

if语句

  1. if expression:
  2. #比较/成员/逻辑运算符
  3. expr_true_suite
  4. #代码块必须缩进4个空格

else语句

  1. if expression:
  2. expr_true_suite
  3. else:
  4. expr_false_suite
  5. #代码块必须缩进4个空格

elif语句

  1. if expression:
  2. expr_true_suite
  3. elif expression2:
  4. expr2_true_suite
  5. elif expression3:
  6. expr3_true_suite
  7. :
  8. :
  9. else:
  10. expr_false_suite

条件嵌套

在条件语句中嵌套条件语句;

同等缩进为同一条件的结构;

猜数字游戏: 一次猜

  1. # Filename : guessnum1.py
  2. from random import randint
  3. #引入math库
  4. x = randint(0, 300)
  5. #随机获取一个范围内的数字
  6. digit = int(input('Please input a number between 0~300: '))
  7. if digit == x :
  8. print('Bingo!')
  9. elif digit > x:
  10. print('Too large, please try again.')
  11. else:
  12. print('Too small, please try again.')
  13. #进行条件判断

循环结构:

range()语句

  1. range(start,end,step)
  2. #start:起始值,缺省时默认为0
  3. #end:终值
  4. #step:步长,缺省时默认为1,默认值下,得到的对象数是end-start
    #返回值为可迭代值

xrange()语句

和range()语法基本一致,类似于生成器(generator),用多少生成多少,适合处理大数据;

在Python3.x中range()和xrange()合并,返回都是生成器;

while循环

  1. while expression:
  2. #条件表达式
  3. suite_to_repeat

for循环

  1. for iter_var in iterable_object:
  2. #iterable_object可迭代对象可以是string/list/tuple/dictionary/file
  3. suite_to_repeat
  4. #可以明确循环次数,常用于遍历数据集的成员,如列表、生成器表达式

猜数字游戏改进:多次猜

  1. # Filename : guessnum2.py
  2. from random import randint
  3. x = randint(0, 300)
  4. for count in range(5):
  5. #增加循环结构,扩展猜的次数
  6. digit = int(input('Please input a number between 0~300: ')))
  7. if digit == x :
  8. print('Bingo!')
  9. elif digit > x:
  10. print('Too large, please try again.')
  11. else:
  12. print('Too small, please try again.')

break语句:跳出当前循环;

质数(Prime number)又称素数,指在大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(也可定义为只有1和本身两个因数的数);

比1大但不是素数的数称为合数。1和0既非素数也非合数;

质数在公钥加密算法(如RSA)中有重要的地位;

素数判断1

  1. # Filename : prime.py
  2. from math import sqrt
  3. j = 2
  4. while j <= 100:
  5. i = 2
  6. k= sqrt(j)
  7. while i<= k:              #i是作被除数检验j是否是素数
  8. if j%i== 0: break         #如果j可以被i整除,则不是素数,退出循环
  9. i = i+1               #如果j不能被i整除,则i一直加1,直到最后i=k退出循环;
  10. if i> k:                 #判断i是否被除到了最后;
  11. print(j, end = ' '))
  12. j += 1

素数判断2

  1. # Filename : prime.py
  2. from math import sqrt
  3. for i in range(2,101):
  4. #遍历i从2到100
  5. flag = 1
  6. k = int(sqrt(i))
  7. for j in range(2,k+1):
  8. #遍历j从2到k
  9. if i%j == 0:
  10. flag = 0
  11. break
  12. #如果判断数i可以被被除数j整除,则该数不是素数,将flag置0
  13. if(flag):
  14. print(i, end = ' ')

continue语句:跳出当次循环,进入下次循环;

猜数字游戏进一步改进:想停就停

  1. # Filename : guessnum3.py
  2. from random import randint
  3. x = randint(0, 300)
  4. go = 'y'
  5. while(go == 'y'):
  6. digit = int(input('Please input a number between 0~300: '))
  7. if digit == x :
  8. print('Bingo!')
  9. break
  10. elif digit > x:
  11. print('Too large, please try again.')
  12. else:
  13. print('Too small, please try again.')
  14. print('Input y if you want to continue.')
  15. go = input()
  16. #判断输入的内容进行while判断
  17. print(go)
  18. else:
  19. print('Goodbye!')

循环else语句

正常结束循环,则执行else中的代码;

当循环从break处终止,则跳出循环,不执行else中的代码;

自定义函数

  1. def function_name([arguments]):
    #括号之间是所有可选的参数,即使没有括号也不能省略小括号
  2. #如果有参数,参数不能省略掉
  3. "optional documentation string"
  4. #文档字符串,表示注释
  5. function_suite

素数判断3

  1. # Filename : prime.py
  2. from math import sqrt
  3. #自定义函数判断素数isprime(x)
  4. def isprime(x):
  5. if x == 1:
  6. return False
  7. #1不是素数
  8. k = int(sqrt(x))
  9. for j in range(2,k+1):
  10. if x%j== 0:
  11. return False
  12. return True
  13. #取在2到判断数x的根号之间的数,作被除数,与x相除
  14. fori inrange(2,101):
  15. if isprime(i):
  16. print(i, end = ' ')

默认字参数

  可以给函数的参数定义一个默认值,以赋值语句的形式提供;

  默认参数值可以在调用函数时发生改变;

  默认参数一般需要放在参数列表的最后,以防止产生歧义;

  1. def num(x=68,y=True):
  2. if y:
  3. print('')
  4. print(x,'')
  5.  
  6. >>>num()
  7. 1
  8. 682

关键字参数

  调用函数时可以直接写上参数的标识符来给参数赋值;

  关键字参数是让使用者调用参数名来区分参数;

  1. def num(x,y):
  2. if y:
  3. print(y,'')
  4. print(x,'')
  5.  
  6. >>>num(68,False)
  7. 682
  8. >>>num(y=False,x=68)
  9. 682
  10. #允许改变参数列表中的参数顺序;
  11. >>>num(y=False,68)
  12. SyntaxError
  13. >>>num(x=68,False)
  14. SyntaxError
  15. #一旦使用了关键字参数,就要全部使用关键字参数;

默认参数一般在函数定义时使用,关键字参数一般在函数调用时使用;

传递函数:把函数名当成一个普通参数传给另一个函数;

匿名函数:lambda函数

  1. def add(x,y): return x+y
  2.  
  3. add = lambda x,y : x+y

递归

  函数调用自身函数的方法;

  最能表现计算机思想的方法;

  递归必须要有边界条件,即停止递归的条件;

  执行效率远低于循环,占用很大的内存;

汉诺塔游戏

  1. # Filename : Hanoi.py
  2. def hanoi(a,b,c,n):
  3. if n==1:
  4. print(a,'->',c)
  5. else:
  6. hanoi(a,c,b,n-1)
  7. print(a,'->', c)
  8. hanoi(b,a,c,n-1)
  9.  
  10. hanoi('a','b','c',4)

变量作用域

  全局变量:在程序代码主体部分的变量;使用global定义;

  局部变量:在函数中的变量;

  全局变量和局部变量用同一个名字时,遵循”内层屏蔽外层“的原则;

math库

dir(math)可以查看标准库里的所有函数;

help(math.ceil)可以查看函数的定义;

ceil():向上四舍五入;

floor():向下四舍五入;

pow():求平方;

sqrt():求根号;

degrees():将弧度转成角度;

radians():将角度转成弧度;

os库

getcwd():获取当前的工作目录;

chdir(path):修改目录;

rename():修改文件名称;

remove():删除文件;

random库

choice([序列]):从序列当中获取一个随机值;

randint(x,y):生成x到y之间的一个随机数;

randrange():从range()生成的数当中获取一个随机的整数;

random():生成0到1之间的一个随机浮点数;

uniform():生成5到10之间一个随机浮点数;

sample(range(num),x):从给定的range()中随机获取x个数;

shuffle(列表):将列表中的元素打乱;

datetime库

today():显示今天的日期;

time():创建时间;

datetime():当前的日期和时间,毫秒;

strftime():设置时间的格式;

timestamp():时间戳,从定义的时间开始到现在的时间;

fromtimestamp():将时间戳转换成标准时间;

exception异常

  语法错误

  运行时刻错误

  逻辑错误

用异常对象来表示异常实例;

异常类

类名 描述

BaseException

所有异常的基类

Exception

常规异常的基类

AttributeError

对象不存在此属性

IndexError

序列中无此索引

IOError

输入输出操作失败

KeyboardInterrupt

用户中断执行

KeyError

映射中不存在此键

NameError

找不到名字

SyntaxError

Python语法错误

TypeError

对类型无效的操作

ValueError

传入无效的参数

ZeroDivisionError

除运算的第二个参数为0

回溯

dir(_builtins_)查看异常类;

BaseException:

异常处理

  用if-else语句处理

  1. ify != 0:
  2. print(x / y)
  3. else:
  4. print('division by zero')

  用try-except语句处理

  1. # Filename: exception2.py
  2. try:
  3. num1 = int(input('Enter the first number: '))
  4. num2 = int(input('Enter the second number: '))
  5. print(num1 / num2)
  6. except ValueError:
  7. print('Please input a digit!')

  用多个except子句except块处理

  1. # Filename: exception4.py
  2. try:
  3. num1 = int(input('Enterthefirstnumber: '))
  4. num2 = int(input('Enterthesecondnumber: '))
  5. print(num1 / num2)
  6. except ValueError:
  7. print('Pleaseinput a digit!')
  8. except ZeroDivisionError:
  9. print('Thesecondnumbercannotbezero!')
  10. #另一种写法
  11. except(ValueError, ZeroDivisionError):
  12. print('Invalidinput!')

空except子句:仅仅单用except也可以;

as语句:确定异常类型,可以将其输出;

  1. # Filename: exception7.py
  2. try:
  3. num1 = int(input('Enterthefirstnumber: '))
  4. num2 = int(input('Enterthesecondnumber: '))
  5. print(num1 / num2)
  6. except Exception as err:
  7. print('Somethingwentwrong!')
  8. print(err)

else语句:若没有异常发生时执行else语句;

whileTrue循环:允许异常发生,知道无异常后break跳出循环;

finally子句:不管是否发生异常,finally里的异常都要执行;

  1. # Filename: exception12.py
  2. deffinallyTest():
  3. try:
  4. x = int(input('Enter the first number: '))
  5. y = int(input('Enterthesecondnumber: '))
  6. print(x / y)
  7. return 1
  8. except Exception as err:
  9. print(err)
  10. return 0
  11. finally:
  12. print('Itis a finally clause.')
  13. result = finallyTest()
  14. print(result)

上下文管理器(Context Manager):定义和控制代码块执行前的准备动作执行后的收尾动作

with语句:比try-except精简健壮,在操作文件、数据库对象时建议使用with语句;

  1. # Filename: exception13.py
  2. try:
  3. f = open('data.txt')
  4. for line in f:
  5. print(line, end = '')
  6. except IOError:
  7. print('Cannotopenthefile!')
  8. finally:
  9. f.close()
  10. #with写法
  11. with open('data.txt') as f:
  12. for line in f:
  13. print(line, end='')

用Python玩数据-笔记整理-第二章的更多相关文章

  1. 用Python玩数据-笔记整理-第二章-练习与测试

    课间练习:  经典问题的Python编程 按公式:C= 5/9×(F-32) ,将华氏温度转换成摄氏温度,并产生一张华氏0-300度与对应的摄氏温度之间的对照表(每隔20度输出一次) 验证命题:如果一 ...

  2. 用Python玩数据-笔记整理-第一章

    第一个程序:print >>>print("Hallo World!") >>>Hallo World! mystring = "Ha ...

  3. 用Python玩数据-笔记整理-第一章-练习与测试

    编程题: 简单的输入输出:编程实现输入姓.名的提示语并接受用户输入,并单独显示姓.名和全名,执行效果如下所示: Input your surname:ZHANG Input your firstnam ...

  4. Stealth视频教程学习笔记(第二章)

    Stealth视频教程学习笔记(第二章) 本文是对Unity官方视频教程Stealth的学习笔记.在此之前,本人整理了Stealth视频的英文字幕,并放到了优酷上.本文将分别对各个视频进行学习总结,提 ...

  5. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二章:矩阵代数

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二章:矩阵代数 学习目标: 理解矩阵和与它相关的运算: 理解矩阵的乘 ...

  6. 流畅的python学习笔记:第二章

    第二章开始介绍了列表这种数据结构,这个在python是经常用到的结构 列表的推导,将一个字符串编程一个列表,有下面的2种方法.其中第二种方法更简洁.可读性也比第一种要好 str='abc' strin ...

  7. Python 3标准库课件第二章

    整理第一章我又觉得烦,我就看第二章了,灰头土脸的,第二章一.如列表(list).元组(tuple).字典(dict).集合(set)二.2.1 enum:枚举类型 enum模块定义了一个提供迭代和比较 ...

  8. Java编程思想_笔记_第二章_一切都是对象

    第二章对于知识只是点到,会在以后章节会详细展开. 笔记的侧重会偏向记录自己知识模糊的地方.比如 xxx 很重要很难很实用,但是已经熟练使用就没有记录,而 “使用对象.成员名称来使用成员变量”,较简单而 ...

  9. 《python for data analysis》第二章,美国1880-2010年出生人口姓名的数据分析

    <利用python进行数据分析>第二章的姓名例子,代码.整个例子的所有代码集成到了一个文件中,导致有些对象名如year同时作为了列名与行名,会打印warning,可分不同的part依次运行 ...

随机推荐

  1. Win8 Metro(C#)数字图像处理--3.2图像方差计算

    原文:Win8 Metro(C#)数字图像处理--3.2图像方差计算 /// <summary> /// /// </summary>Variance computing. / ...

  2. IE的BHO通过IHTMLDocument2接口获得网页源代码

    参考了凤之焚的专栏:http://blog.csdn.net/lion_wing/article/details/769742 但是他的源码有些问题,即IHTMLElementCollection接口 ...

  3. 分布式文件系统的比较,115网盘用了fastdfs

    分布式文件系统 分布式文件系统,作为网盘的基础,应用底层文件管理.而分布式文件系统之上,用户文件的权限,用户目录管理都是由非分布式文件系统管理. 分布式文件系统需要关心的主要内容: 文件分布/数据分布 ...

  4. Android手机导出文件

    因为要写联系人相关的东西,所以得把db导出来看看 第一步:Root手机 尝试了几个Root工具,发现就KingRoot能root 第二个:编写bat脚本 脚本内容是先将DB文件从/data/data ...

  5. 零元学Expression Blend 4 - Chapter 14 用实例了解布局容器系列-「Pathlistbox」II

    原文:零元学Expression Blend 4 - Chapter 14 用实例了解布局容器系列-「Pathlistbox」II 本章将延续上一章的范例,步骤解析. 本章将延续上一章的范例,步骤解析 ...

  6. Android零基础入门第46节:下拉框Spinner

    原文:Android零基础入门第46节:下拉框Spinner 上一期学习了GridView的使用,你已经掌握了吗?本期一起来学习Spinner的使用. 一.认识Spinner Spinner其实就是一 ...

  7. c# 9png实现(图片缩放)

    跟据9png的实现原理自己写了个生成图片的函数,9png的原理是将图片切成9块如下 其中1.3.7.9不进行缩放,2,4,5,6,8进行缩放,这样就防止了放大后导致边界出现锯齿的问题 在实现过程中主要 ...

  8. Markdown教程<2> mermaid图形绘制(1)

    Markdown教程<2> mermaid图形绘制(1) 博客园中的markdown编辑器同时支持mermaid图表引擎与tex公式引擎,可以使用mermaid直接画出流程图,时序图,甘特 ...

  9. Hyperledger Fabric1.4环境搭建过程

    简单记录一下fabric版本1.4的环境搭建,运行环境为Ubuntu18.04,其中一些内容是根据官方文档整理的,如有错误欢迎批评指正. 本文只介绍最简单的环境搭建方法,具体的环境搭建解析在这里深入解 ...

  10. Spark学习之路(七)—— 基于ZooKeeper搭建Spark高可用集群

    一.集群规划 这里搭建一个3节点的Spark集群,其中三台主机上均部署Worker服务.同时为了保证高可用,除了在hadoop001上部署主Master服务外,还在hadoop002和hadoop00 ...