python黑马教程exe文件_黑马Python教程笔记 —— 不断更新

更新记录

2018.5.24 ,更新190 ~ 195

2018.5.27, 更新196 ~ 201,下面的课程要开始讲实例了,期待

064

bool型数据,True=1,False=0 参与运算

065

字符间用+进行连接

用*进行重复的

除了+和*进行字符串拼接,字符串之间不能做其他运算

067

input(X)将x输出到控制台

type(x)查看x的变量类型

使用print函数时,用户输入的任何内容认为是一个字符串

068

int(x)转换为整数

float(x)转换为浮点数

077

%s表示字符串

%d表示整数,%06可以用0补足6位

%f表示浮点数,%.2f可以用来表示两位小数

%%用来显示%

078 变量的命名

见名知意

字母、下划线、数字;开头不能是数字;不能与关键字重名

079 关键字

通过一下命令查看python的关键字

import keyword

print(keyword.kwlist)

080 变量的命名规则

标示符区分大小写。andy 和Andy是不同的变量

通常在 =左右各留一个空格

通常变量名由两个或者多个单词构成

a. 每个单词都使用小写字母

b. 单词之间用`_下划线连接

c. 例如:frist_name、last_name、qq_password、qq_number等

082 if语句的基本语法

代码缩进为一个tab键,或者4个空格 --建议使用空格

开发时,tab和空格不要混用

084 比较关系运算符

==, !=

if及下方缩进部分是完整的一部分代码。

087

Else用来显示条件不成立的时候做什么事情

088

多行代码需要注释掉,采用Ctrl+/的快捷方式

写if...else...结构,if语句后的判断结束后加:,else的后面也需要加:

# 注意"18"和"else"后面的":"

if age >=18:

print("可以进入")

else:

print("禁止进入")

089

age = int(input("请输入年龄")) # int 将字符串转换为整型

pycharm中运行代码的快捷键是:Ctrl+`F5

091

逻辑运算符:and/or/not

条件1 and 条件2

条件1 or 条件2

not 条件

095 elif

Python的多条件不是else if 而是elif

if 条件1:

条件1满足时执行的代码

elif 条件2:

条件2满足时执行的代码

elif 条件3:

条件3满足时执行的代码

else:

以上条件都不满足时执行的代码

注意格式中的:

098 if的嵌套格式

if 条件1:

条件1满足时执行的代码

……

if 条件1基础上的条件2:

条件2成立时执行的代码

else:

条件2不满足时执行的代码

else:

条件1不满足时执行的代码

100 整体缩进与回退

集体缩进的方法是:选中之后按tab键

缩多了往回退的方法:选中之后按shift+tab

106 随机函数

import random

110 循环

初始条件设置——通常是重复执行的 计数器

while 条件(判断 计数器 是否达到 目标次数):

条件满足时,做的事情1

条件满足时,做的事件2

……

处理条件(计数器 + 1)

114 赋值运算符

c = a + b

c += a等效于c = c + a

c -= a等效于c = c - a

115 计数方法

编程语言通常从0开始计数

120 break 和 continue

遇到break 条件满足后,直接跳出循环

遇到continue,条件满足后,跳到条件条件判断的地方,不执行后续的那一次的代码。

在循环中,如果使用continue 这个关键字,在使用关键字之前,需要确认循环的计数是否修改,否则可能死循环。

123

continue只排除某一些指令

break只要遇到某指令就退出

124 循环的嵌套

while嵌套的语法

126 嵌套演练-小星星

print在输出的时候如果不需要换行,就需要加上,end=""。举例print("*",end="")

132 转义字符

\t输出 制表符

\n输出 换行符

\"输出 “

\r输出 回车

133 函数基础

函数:把 具有独立功能的代码块 组织为一个小模块,在需要的时候 调用

137

注意:定义好函数之后,只表示这个函数封装了一段代码而已,如果不主动调用函数,函数是不会主动执行的。

def say_hello():

print("hello 1")

print("hello 2")

print("hello 3")

say_hello()

139

函数的调用必须在函数定义的下方,如果没有定义函数,就调用函数,就会报错。

140

pycharm中,step over的作用是跳过自定义函数,当成一行去执行;step in的作用是将一步一步执行自定义函数。对内置函数,两种step过程是一样的。

141 函数的基本使用

函数空行规范:按要求,在自定义函数前需要保留两行空行。

函数的文档注释:在自定义函数下方使用"""函数说明""",可以对函数进行注释。在函数调用的地方按下Ctrl+Q可以查看函数说明。

142 函数的参数

对上例的修改

def sum_2_num():

"""对两个数字的求和"""

num1 = 10

num2 = 20

result = num1 + num2

print("%d + %d = %d"%(num1,num2,result))

sum_2_num()

发现问题:只能写10+20的

143

def sum_2_num(num1,num2):

"""对两个数字的求和"""

result = num1 + num2

print("%d + %d = %d"%(num1,num2,result))

sum_2_num(40,30)

144 形参与实参

def sum_2_num(num1,num2):

定义函数时的 num1和num2 是 形参

sum_2_num(40,30)

调用函数时的 40和30 是 实参

145 函数的返回值

返回值:是函数 完成工作 后,最后给调用者的一个结果*。

在函数中,使用return关键字可以返回结果

调用一方,可以使用 变量 来 接收 函数的返回值。

146 函数返回值举例

def sum_2_num(num1,num2):

"""对函数的求和"""

result = num1 + num2

#可以使用返回值,告诉函数一方结果

return(result)

#可以使用变量来接收函数的返回值

sum_result = sum_2_num(10,20)

print("计算结果:%d"%sum_result)

147 Return的使用注意事项

return表示返回,之后的同缩进代码将不会被执行,即便有,pycharm也会提示“unreachable”

148 函数的嵌套调用

# hm_07_函数的嵌套调用

def test1():

print("*" * 50)

def test2():

print("-" * 50)

test1()

print("+" * 50)

test2()

150

# hm_08_打印分隔线

def print_line(char,times):

print(char * times)

print_line("hi ", 40)

152

# 函数的嵌套

def print_line(char, times):

print(char * times)

def print_lines(char, times, col):

row = 1

while row <= col:

print_line(char, times)

row += 1

print_lines("% ", 20, 2)

153 Pycharm小技巧

光标放在函数名上,稍等片刻出现黄色小灯泡,点击选择第二项insert documentation string stub,此时pycharm将自动增加多行注释,并且以:param方式把形参标注出来。建议这么写:

def print_line(char, times):

print(char * times)

def print_lines(char, times, col):

"""打印多行分隔线 --->此处描绘整个函数的作用

--->自动留空

:param char:分隔线使用的分隔字符 --->冒号后该形参的作用

:param times:分隔字符重复的次数 --->冒号后该形参的作用

:param col:分隔线出现的行数 --->冒号后该形参的作用

"""

row = 1

while row <= col:

print_line(char, times)

row += 1

print_lines("% ", 20, 2)

154 模块

模块 是Python程序架构中的一个 核心概念 。

每个以.pyj结尾的python源代码文件都是一个模块 。要记得用import导入才能用。

156

模块名不能用数字开头,否则无法使用import

157 pyc文件

pyc文件:导入的py文件被编译之后的结果,这样可以提高运行速度。

158 几种数据类型

字符串、列表、元组、字典都可以看成是一个序列或者是容器

159 列表

list(列表)是python中使用的 最频繁 的数据类型。

list就是C语言中的数组。

使用[ ]将它们括起来,数据之间用,进行分割。

举例:name_list = ["zhangsan","lisi","wangwu"]

160

列表存储数据的索引(或下标)从0开始

name_list[0]

如果索引超过了,程序会报错。

161 列表有哪些操作?

有11种操作——方法。有点类似于函数的调用。如:name_list.clear等

162 列表的“增”、“删”、“改”、“查”

166 del

在日常开发中,要从列表删除数据,建议使用列表提供的方法

name_list = ["张三","李四","王五"]

# 使用del关键字(delete)删除列表元素

# 提示:在日常开发中,要从列表删除数据,建议使用列表提供的方法

del name_list[1]

# del关键字本质上是用来将一个变量从内存中删除

name = "小明"

del name

# 注意:如果使用del关键字将变量从内存中删除

# 后续的代码就不能再使用这个变量了

print(name)

print(name_list)

167

len函数可以统计列表中元素的总数

count方法可以统计列表中某一个元素出现的次数

name_list = ["张三","李四","王五","王小二","张三"]

# len函数可以统计列表中元素的总数

list_len = len(name_list)

print("列表中包含 %d 个元素"%list_len)

# count方法可以统计列表中某一个元素出现的次数

count = name_list.count("张三")

print("张三出现了 %d 次"%count)

#从列表中删除数据

name_list.remove("张三")

print(name_list)

168 列表排序

name_list = ["zhangsan","lisi","wangwu","wangxiaoer"]

num_list = [6, 8, 4, 1, 10]

# 升序 ==>sort方法

# name_list.sort()

# num_list.sort()

# 降序 ==>sort方法

# name_list.sort(reverse=True) # True 的 T 必须大写

# num_list.sort(reverse=True)

# 逆序 ==>reverse方法

name_list.reverse()

num_list.reverse()

print(name_list)

print(num_list)

169 关键字、函数和方法

关键字:不需要使用(),查看已经学过的关键字的方法:

import keyword

print(keword.kwlist)

len(keword.kwlist) # 有33个关键字

函数:函数名(参数),函数需要死记硬背

方法需要通过对象来调用,表示针对这个对象要做的操作。对象.方法名(参数)

170 列表的循环遍历

遍历:从头到尾一次从列表中获取数据

在循环内部针对每一个元素,执行相同的操作。

在python中为了提高列表的遍历效率,专门提供了迭代(iteration )遍历,用for,不能用while

name_list = ["zhangsan","lisi","wangwu","wangxiaoer"]

# 使用迭代遍历列表

"""

顺序的从列表中依次获取数据,每一次循环过程中,数据都会保存在

my_name 这个变两种,在循环体内部可以访问到当前这一次获取到的数据

for my_name in 列表变量:

print("我的名字叫: %s"%my_name)

"""

for my_name in name_list:

print("我的名字叫: %s"%my_name)

171

python中支持在列表中保存不同类型的数据

但在实际开发中,一个列表通常只存储相同类型的数据

172 元组

元组tuple和列表两点不同:

元组用()定义,列表用[]定义

元组一旦定义,不能增删改

元组有特定的应用场景,之后讲

173

定义空元组的方法:empty_tuple = (),但实际工作中很少定义一个空元组。

定义有一个元素的元组的方法:不能用single_tuple = (5)是错的,这种情况下5前后的括号被忽略了,应该使用single_tuple = (5,)

174

info_tuple = ("zhangsan",18,1.75,"zhangsan")

# 1. 取值和取索引

print(info_tuple[0])

# 根据已知值查索引

print(info_tuple.index("zhangsan"))

# 2. 统计计数

print(info_tuple.count("zhangsan"))

# 统计元组中包含的元素的个数

print(len(info_tuple))

175

在元组中使用遍历并不多

176 元组的应用场景

函数的参数和返回值,一个函数可以接收任意多个函数,或者一次返回多个函数。

格式化字符串,格式化字符串(%)后面的()本质上就是一个元组

将列表转换成元组,就可以保护列表中的数据不可以被修改,以保护数据安全。

177

# 本例用以验证:格式化字符串后面的()本质上就是元组

info_tuple = ("小明",21,1.75)

# 格式化字符串后面的()本质上就是元组

# 正常情况下我们会这么写:print("%s 年龄是 %d 身高是 %.2f"%("小明",21,1.75))

print("%s 年龄是 %d 身高是 %.2f"%info_tuple)

info_str = "%s 年龄是 %d 身高是 %.2f"%info_tuple

print(info_str)

190 - 字符串的查找与替换

hello_str = "hello world"

# 1. 判断是否以指定字符串开始

print(hello_str.startswith("Hello"))

# 2. 判断是否以指定字符串结束

print(hello_str.endswith("world"))

# 3. 查找指定字符串

# index同样可以查找指定的字符在大字符串中的索引

print(hello_str.find("llo"))

# index方法如果指定的字符串不存在,会报错

# find方法如果指定的字符串不存在,会返回-1

print(hello_str.find("abc"))

# 4. 替换字符串

# replace方法执行完成之后,会返回一个新的字符串

# 注意,不会修改原有字符串的内容

print(hello_str.replace("world","python"))

方法

说明

string.startswith(str)

检查字符串是否是以 str 开头,是则返回 True

string.endswith(str)

检查字符串是否是以 str 结束,是则返回 True

string.find(str, start=0, end=len(string))

检测 str 是否包含在 string 中,如果 start 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1

string.rfind(str, start=0, end=len(string))

类似于 find(),不过是从右边开始查找

string.index(str, start=0, end=len(string))

跟 find() 方法类似,不过如果 str 不在 string 会报错

string.rindex(str, start=0, end=len(string))

类似于 index(),不过是从右边开始

string.replace(old_str, new_str, num=string.count(old))

把 string 中的 old_str 替换成 new_str,如果 num 指定,则替换不超过 num 次

191 文本对齐相关

# 假设:以下内容是从网络上抓取的

# 要求:顺序并且居中对齐输出以下内容

poem = ["登鹳雀楼",

"王之涣",

"白日依山尽",

"黄河入海流",

"欲穷千里目",

"更上一层楼",]

for poem_str in poem:

print("|%s|"%poem_str.center(10," ")) #此处填充中文空格

print("|%s|"%poem_str.ljust(10," ")) #此处填充中文空格

print("|%s|"%poem_str.rjust(10," ")) #此处填充中文空格

方法

说明

string.ljust(width)

返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串

string.rjust(width)

返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串

string.center(width)

返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

192 去除空白字符

方法

说明

string.lstrip()

截掉 string 左边(开始)的空白字符

string.rstrip()

截掉 string 右边(末尾)的空白字符

string.strip()

截掉 string 左右两边的空白字符

# 假设:以下内容是从网络上抓取的

# 要求:顺序并且居中对齐输出以下内容

poem = ["\t\n登鹳雀楼",

"王之涣",

"白日依山尽\t\n",

"黄河入海流",

"欲穷千里目",

"更上一层楼",]

for poem_str in poem:

#先使用strip方法去除字符串中的空白字符

#再使用center方法居中显示文本

print("|%s|"%poem_str.strip().center(10," "))

只要在处理文字的时候有很多无用的空白需要去除,就可以使用strip方法,只保留真正需要的字符。

193 字符串拆分与连接的方法

重点讲两个:split(负责拆分)、join(负责连接)

下面的例子先拆分后连接,通过这样的操作,将不需要的空白字符去掉并重新连接为一个新的字符串。

# 假设:以下内容是从网络上抓取的

# 要求:

# 1. 将字符串中的空白字符全部去掉

# 2. 再使用“ ”作为分隔符,拼接成一个整齐的字符串

poem_str = "登鹳雀楼\t 王之涣\t 白日依山尽\t \n 黄河入海流\t 欲穷千里目\t \n 更上一层楼 \t"

print(poem_str)

# 1. 拆分字符串

poem_list = poem_str.split()

print(poem_list)

# 2. 合并字符串

result = " ".join(poem_list)

print(result)

194 字符串的切片

切片索引结束字符不包含在切出的字符串中

步长: 跳跃 指定长度去切割

倒序:最后一个是-1,向前,分别是-2、-3、-4……切的时候不包含最后一个字符。

倒序和正序可以同时存在,所在范围可以认为起始为0,结束为-1

字符串[开始索引:结束索引:步长]

195

num_str = "0123456789"

# - 1. 截取从 2 ~ 5 位置 的字符串

print(num_str[2:6])

# - 1. 截取从 2 ~ 末尾 的字符串

print(num_str[2:])

# - 1. 截取从 开始 ~ 5 位置 的字符串

print(num_str[0:6])

# - 1. 截取完整的字符串

print(num_str[:])

# - 1. 从开始位置,每隔一个字符截取字符串

print(num_str[0:9:2])

# - 1. 从索引 1 开始,每隔一个取一个

print(num_str[1::2])

# - 1. 截取从 2 ~ 末尾 - 1 的字符串

print(num_str[2:-1])

# - 1. 截取字符串末尾两个字符

print(num_str[-2:])

# - 1. 字符串的逆序(面试题)

# 注意:切片的时候,如果步长为负数,那么就认为从右向左切

# 所以此处可以不用指定起始位置为-1,也可以逆序输出

print(num_str[::-1])

196

len(item)计算个数

del(item)删除变量

max(item)找到最大值,如果是字典,只对key比较

min(item)找到最小值,如果是字典,只对key比较

t_dict = {"a":"z","b":"y","c":"x"}

max(t_dict) # 返回值为 c

min(t_dict) # 返回值为 a,只比较了key

cmp("1","2")python 3.0 中已经取消了,直接用大于小于等比较就可以了

字典和字典不能比较大小。

197

字符串、列表和元组都可以使用切片,但是字典不能使用切片,因为字典是无序的。

198 运算符

*让字符串、列表、元组重复若干次。字典不能重复,因为字典中的key是唯一的,一旦重复,key就不唯一了。

+让字符串、列表、元组进行拼接。字典不能拼接。

注意extend方法和append方法与之的区别。

199

in和not in判断某个元素是否为其成员。返回值为True或者False

运算符

Python 表达式

结果

描述

支持的数据类型

in

3 in (1, 2, 3)

True

元素是否存在

字符串、列表、元组、字典

not in

4 not in (1, 2, 3)

True

元素是否不存在

字符串、列表、元组、字典

200 for...else

for也可以带else,for遍历后就会执行else后的语句。然而,一旦For中使用break退出了循环,else就不会被执行了。

for num in [1, 2, 3]:

print(num)

if num == 2:

break

else:

# 如果循环体内部使用break退出了循环,

# else下方的代码就不会被执行。

print("测试本段代码是否会执行")

print("结束循环")

For...else实例

students = [

{"name":"小美"},

{"name":"阿土"}

]

# 在学员列表中搜索指定的姓名

find_name = "小"

for stu_dict in students:

print(stu_dict)

if stu_dict["name"] == find_name:

print("We find! %s"% find_name)

# 如果已经找到,应该直接退出循环,而不再遍历后续的元素。

break

else:

# 如果希望在搜索列表时,所有的字典检查之后,都没有发现需要搜索的目标

# 还希望得到一个统一的提示,就会用else

# 如果把else放在if对应的位置,就会发现,起作用时,会多次输出,不是我们想要的。

print("查无此人")

print("loop over")

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值