简明Python基础(三)

此为jupyter notebook导出文档,如果习惯jupyter界面可以下载文件
链接:https://pan.xunlei.com/s/VMn5shjbvhvIPMqdURC6TZHXA1
提取码:pafn
复制这段内容后打开手机迅雷App,查看更方便

Python的行

python中没有强制的语句中止符

多行语句

Python语句中一般以新行(换行)作为语句的结束符

thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable1 = 1
thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable2 = 2
thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable3 = 3# 这一条语句写在一行太长了,不方便看也不美观
plusResult = thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable1 + thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable2 +thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable3
print(plusResult)
6
# 直接分行不可行,会报错
plusResult = thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable1 +
thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable2 +
thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable3print(plusResult)
  File "<ipython-input-2-4ab6c4dc1efc>", line 2plusResult = thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable1 +^
SyntaxError: invalid syntax
# 可以使用斜杠(\)将一行的语句分为多行显示
plusResult = thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable1 +\
thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable2 +\
thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable3print(plusResult)
6

语句中包含[],{}或者()这些括号中间换行的就不需要使用多行连接符

days = ('Mon','Tue','Wed','Thu','Fri','Sat','Sun')
print(days)
('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun')

控制语句

条件语句 if

  • 代码块是通过缩进来指示的
  • 缩进表示一个代码块的开始,逆缩进则表示一个代码块的结束
  • 声明以冒号:字符结束,并且开启一个缩进级别

在if 和 else elif 的条件后面别忘记冒号

print("请输入体重(kg):")
weight = float(input())
if weight > 90 :print("该减肥啦!!!")

if else 语句

C++ java 的else if语句 在Python改为了 elif

print("请输入体重(kg):")
weight = float(input())
if weight > 90 :print("该减肥啦!!!")
else :print("身材保持的不错!!!")
# java 和 C++中不允许的多重不等式 python中允许 可以写成 1<x<2
print("请输入体重(kg):")
weight = float(input())
if weight > 90 :print("该减肥啦!!!")
elif 60<weight <= 90 :print("身材保持的不错!!!")
else :print("太瘦啦")

while循环语句

循环语句允许执行一条语句或语句块执行多次

# 统计6在2的100次方中的次数:
num = 2 ** 100
print(num)count = 0while num > 0 :if num % 10 == 6:count = count + 1num = num //10print(count)
1267650600228229401496703205376
5

for 循环语句

for 循环变量 in 序列 :

# 统计6在2的100次方中的次数:
num = 2 ** 100
print(num)
count = 0
for digit in str(num):if digit == "6" :count = count + 1
print(count)
1267650600228229401496703205376
5

使用for和range来枚举列表中的元素

# 输出0~4 不包括 5
for i in range(5):print(i)
0
1
2
3
4
# 左闭右开
for x in range(1,5):print(x)
1
2
3
4

列表推导式

列表推导式(List Comprehension)提供了一个创建和操作列表的有力工具

列表推导式由一个表达式以及紧跟着这个表达式的for语句构成,for语句还可以跟0个或多个if或for语句

#本质是多重循环
list1 = [1,2,3]
list2 = [4,5,6]
[x * y for x in list1 for y in list2]
[4, 5, 6, 8, 10, 12, 12, 15, 18]

数值判断可以链接使用,例如1<x<3能够判断变量x是否在1和3之间

[x for x in list1 if 4>x>1]
[2, 3]

多重循环

# 9 9乘法表
for i in range(1,10):for j in range(1,i+1):result = j * iprint('%s x %s = %-5s ' % (j,i,result) , end=' ')#end=' '不换行print()
1 x 1 = 1
1 x 2 = 2      2 x 2 = 4
1 x 3 = 3      2 x 3 = 6      3 x 3 = 9
1 x 4 = 4      2 x 4 = 8      3 x 4 = 12     4 x 4 = 16
1 x 5 = 5      2 x 5 = 10     3 x 5 = 15     4 x 5 = 20     5 x 5 = 25
1 x 6 = 6      2 x 6 = 12     3 x 6 = 18     4 x 6 = 24     5 x 6 = 30     6 x 6 = 36
1 x 7 = 7      2 x 7 = 14     3 x 7 = 21     4 x 7 = 28     5 x 7 = 35     6 x 7 = 42     7 x 7 = 49
1 x 8 = 8      2 x 8 = 16     3 x 8 = 24     4 x 8 = 32     5 x 8 = 40     6 x 8 = 48     7 x 8 = 56     8 x 8 = 64
1 x 9 = 9      2 x 9 = 18     3 x 9 = 27     4 x 9 = 36     5 x 9 = 45     6 x 9 = 54     7 x 9 = 63     8 x 9 = 72     9 x 9 = 81

break语句

break语句用在while和for循环中

break语句用来终止循环语句,即循环条件没有False或者序列还没被完全递归完,也会停止执行循环语句

# 统计第1个9在2的100次方中出现的位置:
num = 2**100
pos = 0
for digit in str(num) :pos = pos + 1if digit == "6":break
print("2**100 is: %d \nthe first position of 6 is Pos.%d"  % (num, pos))
2**100 is: 1267650600228229401496703205376
the first position of 6 is Pos.3

如果在嵌套循环中,break语句将停止执行本层的循环

# 求2到10之间的素数
i = 2
while(i<=10):flag = 0j = 2while(j <= (i/j)):if i%j == 0 :flag = 1breakj = j + 1if flag == 0 :print(i,"是素数")i = i + 1
2 是素数
3 是素数
5 是素数
7 是素数

continue语句

continue语句用来跳过当前循环的剩余语句,然后继续进行下一轮循环

# 求在2的100次方中删除所有的6后的数字
num = 2**100
without6 = ''
for digit in str(num):if digit == '6':continuewithout6 += digit
print("2**100 is: %d \nwithout 6 is: %s"  % (num, without6))
2**100 is: 1267650600228229401496703205376
without 6 is: 12750002282294014970320537

pass语句

pass语句是空语句,是为了保持程序结构的完整性,一般用做占位语句

# 求在2的100次方中删除所有的6后的数字
num = 2**100
without6 = ''
for digit in str(num):if digit == '6':passelse:without6 += digit
print("2**100 is: %d \nwithout 6 is: %s"  % (num, without6))
2**100 is: 1267650600228229401496703205376
without 6 is: 12750002282294014970320537

程序结构

函数

  • 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段

  • 函数能提高应用的模块性,和代码的重复利用率

  • Python提供了许多内建函数,比如print()

  • 开发者也可以自己创建函数,这被叫做用户自定义函数

    函数定义语法:

def functionname(parameters):

   “函数_文档字符串”

   function_suite

  return [expression]

# 定义一个求n!的函数
def fact(n):result = 1for i in range(1,n+1):result = result * ireturn result
  • 可选参数以集合的方式出现在函数声明中并紧跟着必选参数,可选参数可以在函数声明中被赋予一个默认值。已命名的参数需要赋值。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明
  • 函数可以返回一个元组(使用元组拆包可以有效返回多个值)
# intp 和 stringp是可选参数,它们有默认值
# 如果调用于fun_example 时只指定一个参数,那么intp缺省为0 , stringp 缺省为 A default string.
# 如果调用fun_example 时指定了前面两个参数,stringp 仍缺省为A default string。
# Listp是必备参数,因为它没有指定缺省值。
def fun_example(listp, intp=0, stringp="A default string"):"这是一个略微复杂函数的例子,有关函数的说明文档可以写在这里"listp.append( "A new item" )intp += 1return listp, intp, stringpmy_list = [1,2,3]
my_int = 10
v1,v2,v3= fun_example(my_list,my_int)
print(v1)
print(fun_example(my_list,my_int))
print(my_list)
[1, 2, 3, 'A new item']
([1, 2, 3, 'A new item', 'A new item'], 11, 'A default string')
[1, 2, 3, 'A new item', 'A new item']
# 打印函数的帮助文档信息
fun_example.__doc__

全局变量与局部变量

  • 全局变量在函数之外声明局部变量在函数内容声明
  • 函数参数也是局部变量,不需要在函数内部重复定义!!!
  • 全局变量可以不需要任何特殊的声明即能读取,但如果想要修改全局变量的值,就必须在函数开始之处用global关键字进行声明,否则Python会将此变量按照新的局部变量处理(请注意,这点很容易被坑)
number = 5
def func1():print(number)#函数内部未声明,访问全局变量
func1()
print(number)
5
5
number = 5
def func2():number = 3print(number)#函数内部声明,访问局部变量
func2()
print(number)
3
5
number = 5
def func2():global numbernumber = 3 #这是全局变量print(number)#函数内部声明全局变量,访问全局变量
func2()
print(number)
3
3

  • 类(Class)用来描述具有相同的属性和方法的对象的集合
  • 它定义了该集合中每个对象所共有的属性和方法
  • 对象是类的实例

class ClassName:

   ‘类的帮助信息’ #类文档自负串

   class_suite #类体

class_suite由类成员,方法,数据属性组成

#定义一个叫做DeepLearner的类
class DeepLearner(object):'DeepLearner是深度学习者的类,这是有关这个类的帮助文档'# LearnerCount变量是一个类的属性,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用DeepLearner .Llearnercount访问learnerCount = 0# _init_()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法# 类的方法与普通的函数只有一个特别的区别—它们必须有一个额外的第一个参数名称,按照惯例它的名称是 self# seLf代表类的实例,参数seLf在定义类的方法时是必须要的,虽然在调用时不必传入相应的参数def __init__(self, name,schoolName) :self.name = nameself.schoo1Name = schoolNameDeepLearner.learnerCount = DeepLearner.learnerCount + 1def getName( self):return self.namedef getSchoo1Name( self):return self.schoolNamedef displayCount(self):print("Total DeepLearner count is %d" % DeepLearner.learnerCount)def displayLearner(self):print("Name: %s, School: %s" % (self.name,self.schoolName))
#打印类的帮助文档信息
print(DeepLearner.__doc__)
DeepLearner是深度学习者的类,这是有关这个类的帮助文档
#实例化类其他编程语言一般用关键字new,但在Python中并没有这个关键字
#新建一个对象
newLearner1 = DeepLearner('giggle','Zhejiang University')
newLearner2 = DeepLearner('sherry','Zhejiang University of Technology')
# 使用点号 . 来访问对象的属性和方法
print(newLearner1.learnerCount)
newLearner1.displayCount()
2
Total DeepLearner count is 2

文件

Python针对文件的处理有很多内建的函数库可以调用

#写文件
with open( "test.txt", "wt" ) as out_file:out_file.write("该文本会写入到文件中\n看到我了吧")
#读文件
with open( "test.txt", "rt" ) as in_file:text = in_file.read()
print(text)

异常

Python中的异常由try-except [exceptionname]块处理

def except_function():try :#故意除零10 / 0except ZeroDivisionError: print("发生除零异常啦.")else:#正常情况.print ("一切正常啦.")passfinally:#无论是否发生异常都将执行最后的代码print ( "final1y必须被执行,不管有没有发生异常.")
except_function()
发生除零异常啦.
final1y必须被执行,不管有没有发生异常.

如果不知道发生什么异常,可以 except: 表示抓取所有异常

导入外部库

外部库可以使用import [libname]关键字来导入

可以用from [libname] import [funcname]来导入所需要的函数

import random
from time import time
import numpy as np
import matplotlib.pyplot as plt #绘图模块randomint = random.randint(1,100)
print(randomint)startTime=time()
print(startTime)
#直接采用np生成等差数列的方法,生成100个点,每个点的取值在-1~1之间
x_data = np.linspace(-1,1,100)
# y = 2x +1
y_data = 2* x_data + 1.0
#在Jupyter中,使用matplotlib显示图像需要设置为 inline模式,否则不会显示图像
%matplotlib inline
plt.figure()
plt.scatter(x_data,y_data)#画出随机生成数据的散点图
#显示运行总时间 秒为单位
duration = time()-startTime
print(duration)

获取帮助信息

如果想知道一个对象(object)是如何工作的,可以调用help(对象)!另外还有一些有用的方法,

dir()会显示该对象的所有方法,还有会显示其文档:

#获取整形的所有方法
dir(1)
help(int)
a = 12345
a.__neg__()

打.后加tab键获取自动填充放方法选择

第一章 TensorFlow基础——python语法(三)相关推荐

  1. 第一章 TensorFlow基础——python语法(二)

    简明Python基础(二) 此为jupyter notebook导出文档,如果习惯jupyter界面可以下载文件 链接:https://pan.xunlei.com/s/VMn5sAsjVypJElz ...

  2. 第一章 TensorFlow基础——python语法(一)

    Python语法一(print.变量.数据类型.基本运算) 此为jupyter notebook导出文档,如果习惯jupyter界面可以下载文件 链接:https://pan.xunlei.com/s ...

  3. Python计算机视觉:第一章 图像处理基础

    第一章 图像处理基础 1.1 PIL-Python图像库 1.1.1 对图片进行格式转换 1.1.2 创建缩略图 1.1.3 拷贝并粘贴区域 1.1.4 调整尺寸及旋转 1.2 Matplotlib库 ...

  4. 尚硅谷python核心基础教程笔记-第一章 计算机基础知识

    第一章 计算机基础知识(视频1-10) 课程介绍 课程名称:Python基础视频教程 讲师:尚硅谷教育,李立超(lichao.li@foxmail.com) 面向的层次:From Zero to He ...

  5. ZeroMQ 中文指南 第一章 ZeroMQ基础【转载】

    此文章转载自GitHub : https://github.com/anjuke/zguide-cn 作者信息如下. ZMQ 指南 作者: Pieter Hintjens ph@imatix.com, ...

  6. YAML第一章 基本概念及语法

    YAML第一章 基本概念及语法 简介 本文对YAML的基本概念及语法进行了详细的分析,尤其是对YAML的语法进行了详细的阐述,旨在希望通过本文能对YAML有一个基本的了解,能够书写YAML文档. 声明 ...

  7. ZMQ 第一章 ZeroMQ基础

    # ZMQ 第一章 ZeroMQ基础 首先得感谢原创作者的分享! **作者: Pieter Hintjens <ph@imatix.com>, CEO iMatix Corporation ...

  8. 第一章 HTML5基础

    第一章 HTML5基础 什么是前端开发? 以一个网站为例包括网站设计.前端开发.程序开发 等.网站设计就是网站的外观,平面的东西.程序开发也 好理解就是功能实现.而前端开发,简单来说,就是把 平面效果 ...

  9. 第一章 Pandas基础

    第一章 Pandas基础 导入pandas与numpy模块: import pandas as pandas import numpy as np 查看pandas的版本: print(pd.__ve ...

最新文章

  1. AV1时代要来了,超高清视频时代视频编码技术的机遇与挑战
  2. 苹果笔记本中为虚拟机扩充硬盘的方法
  3. UA MATH567 高维统计 专题0 为什么需要高维统计理论?——协方差估计的高维效应与Marcenko-Pastur规则
  4. Java开发中Netty线程模型原理解析!
  5. c#用canny算子做边缘提取_机器视觉学习(三)边缘检测
  6. Spring-SpringMVC父子容器
  7. # 字符串从右往左查找_字符串匹配(搜索,查找)算法
  8. 强制进程结束(内核函数)
  9. 被阿里P8面了两个小时,技术、业务有来有回......
  10. Nginx下Uwsgi模块常用参数说明
  11. 【零基础学Java】—List集合(三十九)
  12. 2021-2025年中国电子薄膜开关行业市场供需与战略研究报告
  13. Python OpenCV学习笔记之:灰度图像的直方图计算
  14. C#图片处理之:在图片上画直线
  15. iOS网络请求之multipart/form-data提交数据
  16. 画三线格子的高效方法,不用再一个格子一个格子的选中啦
  17. 彻底了解|利用Apache CXF框架开发WebService
  18. 高等数学(第七版)同济大学 习题1-5 个人解答
  19. libusb 串口 android,rk3399pro通过修改内核编译支持luat air720上网及串口通讯
  20. 了解速率控制模式Rate Control Mode-CBR,VBR,CRF(x264、x265、vpx)

热门文章

  1. oracle 得到一个树,Related to Oracle SQL 关于树形数据的遍历
  2. php汉字转换拼音,PHP汉字转换拼音的函数代码
  3. erlang虚拟机精要(2)-异步信号时间功能
  4. 基因分子生物学(2)-DNA携带遗传特性
  5. 【数据分析】Python数据分析学习路线个人总结
  6. 深度强化学习入门介绍
  7. 温州大学《深度学习》课程课件(七、卷积神经网络基础)
  8. 【学术相关】是什么让女性在计算机史上“隐身”了?
  9. 【NLP】图解 BERT 预训练模型!
  10. 内容流推荐中的个性化标题生成框架