python学习
第一天
1.解释器的作用
(翻译官)(计算机与程序员之间的)
翻译代码给计算机
运行文件运行代码
解释器种类:
. cpython(课程)
. ipython(交互)
(.exe可执行文件)
pycharm(IDE集成开发环境)调用解释器运行文件
2.pycharm基本使用
*新建项目:
打开pycharm–create new project–选择项目根目录和解释器版本
*书写代码:
新建文件(如果将来文件要上传至服务器就必须英文命名)–书写代码–验收成果
print('hello world')
#python输出程序内容给用户看,单双引号没差别
*运行文件的方法:
空白处右键run
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-puggzylM-1665503723671)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220715173142009.png)]
第一行:解释器的位置
第二行:输出内容
第三行:表示程序运行结束
3.项目管理
*新建项目
*打开项目
this window:覆盖当前项目,从而打开目标项目
new window:新窗口打开,多次打开pycharm
attach:多个项目在一个pycharm中打开
*关闭项目
file–close project/close projects
第二天
1.注释
*单行注释
只能注释一行内容
# 注释内容
*多行注释
可注释多行内容,一段代码
'''
第一行注释
第二行注释
第三行注释
'''
"""
第一行注释
第二行注释
第三行注释
"""
2.变量
程序就是处理数据(内存储与外存储)用的
*变量的作用
变量就是一个数据存储时其所在的内存地址的名字(譬如图书馆内的书架上的书的编号)
*定义变量
- 语法
变量名=值
# 将值赋值到变量名中
- 定义变量的归总
变量名是自定义的,得符合标识符的命名规则(各种名字):
**由数字、字母、下划线组成 **,
不能数字开头,
不能使用内置关键字,
严格区分大小写
见名知意:
MyName/myName/my_name(多个英文单词)
-
使用
my_name='xxQ' # 定义变量 print(my_name) # 使用变量
*认识数据类型
*认识bug
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6EarN05o-1665503723673)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220716155320541.png)]
显示:行数、错误内容、错误类型
*Debug工具(pycharm解释器中集成的用来调试程序的工具)
可查看程序的执行细节和流程或者调解bug
使用步骤:打断点、调试
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-URwYfnKH-1665503723673)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220716160420382.png)]
调试器右侧显示程序的细节、流程
‘Console’是输出数据显示的位置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XuVwJ26G-1665503723674)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220716160808046.png)]
‘1’是逐行执行,右击执行下一行
‘2’是显示变量被赋予的值的类型
此时表示第一行已经执行完毕
3.认识数据类型
字符串数据类型的特点:都要带引号
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hYBraeMM-1665503723674)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220716163911770.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RWIDjtTl-1665503723675)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220716163926224.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RNkr5E3P-1665503723676)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220716164355950.png)]
//显示类型
4.输出
*格式化输出
-
格式化符号
%s字符串
%f浮点数
%.2f小数点后保留两位小数
%d有符号的十进制整数(正负号都有)
%04d保留4位整数
""" 1.准备数据 2.格式化输出数据 """ age = 18 name = 'TOM' weight = 75.5 stu_id = 1 stu_id2 = 1000 # 1.我的名字是TOM print('我的名字是%s' % name) # 2.我的学号是001、1000 print('我的学号是%03d' % stu_id) # '0'表示数字不够时用0来占位 print('我的学号是%03d' % stu_id2) # 超出当前位数则原样输出 # 3.我的体重是75.50公斤 print('我的体重是%.2f' % weight) # 4.我的名字是TOM,今年18岁了 print('我的名字是%s,今年%d岁了' % (name, age)) # 5.我的名字是TOM,明年19岁了 print('我的名字是%s,明年%d岁了' % (name, age+1)) # 可直接在输出上进行简单的数学运算 # 6.我的年龄是18岁%d print('我的年龄是%d' % age) # 7.我的名字是TOM,今年18岁,明年19岁了,体重75.50公斤,学号是001 print('我的名字是%s,今年%d岁,明年%d岁了,体重%.2f公斤,学号是%03d' % (name, age, age+1, weight, stu_id))
%s功能强大,包含%f以及%d的功能
name = 'TOM' age = 18 weight = 75.5 # 我的名字是TOM,我今年18岁了,体重75.5公斤 print('我的名字是%s,我今年%s岁了,体重%s公斤' % (name, age, weight)) # 这一句话的输出包含中文,整句话仍然为字符串
-
f-字符串
f’{表达式}'与%s等同,但是比%s高效简洁
name = 'TOM'
age = 18
# 我的名字是TOM,今年18岁了
print('我的名字是%s,今年%d岁了' % (name, age))
# f'{表达式}'
print(f'我的名字是{name},今年{age}岁了')
*print的结束符
hello = 'hello'
world = 'world'
hw = hello + ' ' + world # String concatenation连接字符串
print(hw)
第三天
1.转义字符
\n:换行(反斜杠n)
\t:制表符,4个空格的距离
2.结束符
print('输出内容',end="自定义任意符号")
3.输入
程序接受用户输入的数据的功能
-
输入功能的语法
input("提示信息")
-
输入的特点
*当程序执行到input,等待用户输入,输入完成会才继续向下 执行
*input接收用户输入后,一般存储到变量
*input会把接收到的任意用户输入的数据都当作字符串处理
password=input('请输入密码:')
print(f'您输入的密码是{password}')
4.转换数据类型
int(x)-------------------将x转换为一个整数
float(x)-----------------将x转换为一个浮点数
str(x)-------------------将对象x转换为字符串
eval(str)---------------用来计算在字符串中的有效Python表达式,并返回一个对象(转换成相应内容的原本的数据类型)
tuple(s)----------------将序列s转换为一个元组(元组是小括号)
list(s)-------------------将序列s转换为一个列表(列表是中括号)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OCnaJcTN-1665503723676)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220728204547748.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ii3JXwvY-1665503723677)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220728204602850.png)]
5.运算符分类
-
算数运算符
+ 加 1+1输出结果为2 - 减 1-1输出结果为0 * 乘 2*2输出结果为4 / 除 10/2输出结果为5 // 整除 9//4输出结果为2 % 取余 9%4输出结果为1 ** 指数 2**4输出结果为16 () 小括号 提高运算优先级 顺序:
()
>**
>*
/
//
%
>+
-
(直接用python console)
-
赋值运算符
= 赋值 右侧结果赋值给=左侧变量 num1, float1, str1 = 10, 0.5, 'hello world' #多变量赋值 print(num1) print(float1) print(str1)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gb1hUZsi-1665503723677)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220728225859856.png)]
-
复合赋值运算符
(先执行算数运算符然后将执行后的结果赋值给左边的变量)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B2U4JUYU-1665503723678)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220728230530411.png)]
a = 10 a += 1 print(a) b = 10 b -= 1 print(b)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h9uU2FJb-1665503723678)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220728230646336.png)]
注意:先运算右边的表达式,最后计算复合赋值运算
b = 10 b += 1 + 2 # b=10+(1+2) c = 10 c *= 1 + 2 # c=10*(1+2)
-
比较运算符
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2lHV8M8Q-1665503723679)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220729012315925.png)]
a = 1 b = 1 c = 2 print(a == b) print(a != c) print(c > b) print(a < c) print(a >= b) print(a <= b)
-
逻辑运算符
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3DSW47SM-1665503723679)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220729012923680.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d1wPXeHa-1665503723680)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220729165841449.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7OUHs69Z-1665503723681)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220729165857586.png)]
第四天
1.条件语句
-
作用
条件成立执行某些代码,条件不成立则不执行这些代码
-
if语法
if 条件: 条件成立执行的代码1 条件成立执行的代码2 条件成立执行的代码3 ......
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XU5Y45u2-1665503723681)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220729182654693.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X6ex7ePs-1665503723682)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220729182707992.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XGS7jm7I-1665503723682)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220729190449492.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wWbJJJWF-1665503723683)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220729190458291.png)]
# ⽤户可以输出⾃⼰的年龄,然后系统进⾏判断是否成年,成年则输出"您的年龄是'⽤户输⼊的年龄',已经成年,可以上⽹"。 age = input('请输入您的年龄:') if age >= 18: print(f'您的年龄是{age},已经成年,可以上⽹')
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xEDaL43F-1665503723684)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220729192109587.png)]
出现报错,原因是age作为字符串与整型进行比较,为此要把age转换为整型
age = int(input('请输入您的年龄:')) if age >= 18: print(f'您的年龄是{age},已经成年,可以上⽹')
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A01gBBPc-1665503723684)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220729192322887.png)]
-
if…else…
if 条件: 符合条件的代码1 符合条件的代码2 ...... else: 条件不成立执行的代码1 条件不成立执行的代码2 ...... age = int(input('请输入您的年龄:')) if age >= 18: print(f'您的年龄是{age},已经成年,可以上⽹') else: print(f'您的年龄是{age},还未成年,请离开')
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R0Nuwylj-1665503723685)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220729203935243.png)]
%前后类型要一样
-
多重判断(当遇到多种情况需要判断的时候)(条件是并列的)
if 条件1: 条件1成⽴执⾏的代码1 条件1成⽴执⾏的代码2 ...... elif 条件2: 条件2成⽴执⾏的代码1 条件2成⽴执⾏的代码2 ...... elif 条件3: ...... ...... ...... else: 以上条件都不成⽴执⾏执⾏的代码 # else放整个if语句的最后,表示以上条件都不成立时执行的代码
<工龄判断>
age = int(input('请输入您的年龄:')) if age < 18: print(f'您的年龄为{age},属于童工') elif (age >= 18) and (age <=60): #化简:elif 18 <= age <= 60: print(f'您的年龄为{age},合法工龄') elif age > 60: print(f'您的年龄为{age},已退休')
-
if嵌套
if 条件1: 条件1成⽴执⾏的代码 条件1成⽴执⾏的代码 if 条件2: 条件2成⽴执⾏的代码 条件2成⽴执⾏的代码
条件2是在条件1内,属于包含关系
seat = 0 money = 1 money = int(input('请给钱:')) seat = int(input('看看有没有座位:')) if money == 1: print('有钱可以上车') if seat == 1: print('有钱且有座位') else: print('站着') else: print('不可以上车')
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VTsbByCx-1665503723686)(python学习.assets/image-20220910210327258.png)]
在python中采用随机数的时候:1.导模块2.用模块里的功能
randint:产生均匀分布的随机整型矩阵
导模块的时候,导模块的语句放在所有逻辑代码的前面,为的是下面所有语句都有权限去使用这个模块
"""
random(随机)
randint(产生随机矩阵)
1.导入模块:import 模块名
2.使用模块功能:random.randint(开始的位置,结束的位置)
"""
import random
num=random.randint(0,2)
print(num)
2.三目运算符(三元表达式)
(化简最简单的if else语句)
条件成立执行的代码 if 条件 else 条件不成立执行的代码
举例
a=1
b=2
c=a if a > b else b
print(c)
第五天
python中循环分为while和for两种
1.1while循环
while 条件:
条件成立重复执行的代码1
条件成立重复执行的代码2
条件成立重复执行的代码3
......
i = 1
while i <= 10:
print('过过过')
i += 1 # 增量为1
正常代码应该这样写:
i=0
while i < 5:
print("过过过")
i += 1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JwtfgXod-1665503723687)(python学习.assets/image-20220924111707043.png)]
1.1.1 1-100累加和
"""
1.准备做加法运算的数据1-100,且自增为1
2.准备变量保存将来运算的结果
3.使用循环计算做加法运算
4.验证结果的准确性
"""
i = 1
result = 0
while i < 101:
result += i
i += 1
print(result)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Jwicj5K-1665503723687)(python学习.assets/image-20220924115732083.png)]
1.1.2 1-100偶数累加和
#法一:
"""
1.准备运算数据1-100的偶数,自增为2
2.准备变量储存运算结果
3.使用循环做加法运算
4.验证结果的准确性
"""
i = 0
result = 0
while i < 101:
result += i
i += 2
print(result)
法二:
"""
1.运用if语句判断1-100的偶数
2.准备变量存储最后计算的结果
3.运用循环做累加运算,i++
"""
i = 1
result = 0
while i <101:
if i % 2 == 0:
result += i
i += 1
print(result)
推荐选择第一种方法
注意:
计数器非常重要,有的程序不加计数器最后可能卡死
1.1.3 break和continue
- break:退出本层循环
- continue:提前结束本次循环,忽略后面的执行语句,但并未退出循环(如果使用continue,在continue前一定要修改计数器,不然就陷入死循环)
# break 循环吃5个苹果,吃完第三个吃饱了,第4个和第5个不吃了(不执行)
i = 1
while i <= 5:
if i == 3:
print(f'吃到第{i}个苹果,吃饱了')
break
print(f'吃到第{i}个苹果')
i += 1
# continue 循环吃5个苹果,循环吃到第三个吃出一个虫子,第三个不吃了,没吃饱吃第四个第五个
i = 1
while i <= 5:
if i == 3:
print(f'吃到第{i}个苹果有虫子')
i += 1
continue
print(f'吃第{i}个苹果')
i += 1
1.1.4while循环嵌套
while 条件1 :
条件1成立执行的语句
......
while 条件2:
条件2成立执行的语句
......
两层循环就需要两个循环的计数器
"""
1.循环打印3次过过过
2.冲冲冲
3.上面是一套程序,连续执行3次
"""
i = 0
while i < 3:
j = 0
while j < 3:
print("冲冲冲")
j += 1
print('过过过')
print('-------------')
i += 1
1.1.5应用
-
正方形星号:(print自带输出和换行功能)
j = 0 while j < 4: i = 0 while i < 4: print('*', end='') i += 1 print() j += 1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q808HLvs-1665503723688)(python学习.assets/image-20220924181412028.png)]
-
三角形星号:
# 打印三角型星号,行号与每行星星个数相等 j = 0 while j < 4: # 控制行号 i = 0 while i <= j: # 控制个数 print('*', end='') i += 1 print() j += 1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D8cdBjtt-1665503723689)(python学习.assets/image-20220924182515806.png)]
-
九九乘法表
# 打印三角型星号,行号与每行星星个数相等 j = 1 while j <= 9: # 控制行号 i = 1 while i <= j: # 控制个数 print(f'{i}*{j}={i*j}', end='\t') i += 1 print() j += 1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i2UDsrcq-1665503723689)(python学习.assets/image-20220924183912472.png)]
1.2for循环
1.2.1
for 临时变量 in 序列 :
重复执行的代码1
重复执行的代码2
......
-
临时变量:自定义的
-
序列:数据序列
"""
1.准备一个数据序列
2.书写for循环
"""
str1 = 'hahaha'
for i in 'hahaha':
print(i)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZgFcCfV3-1665503723690)(python学习.assets/image-20220924195513622.png)]
1.2.2break 退出for循环
str1 = 'hahaha'
for i in 'hahaha':
if i == 'a':
break
print(i)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PtFNvVIP-1665503723690)(python学习.assets/image-20220924232211001.png)]
1.2.3continue退出for循环
str1 = 'hahaha'
for i in 'hahaha':
if i == 'a':
print('遇到a不打印')
continue
print(i)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gTApzpUs-1665503723691)(python学习.assets/image-20220924232546802.png)]
1.2.4 while…else
else是指循环正常结束后执行的代码
else后的print只能在循环结束后才执行
while 条件:
条件成立重复执行的代码
else:
循环结束之后要执行的代码
break(循环非正常结束)后的else不执行
循环在continue控制下是正常结束循环,所以else可以正常执行
1.2.5for…else
for 临时变量 in 序列 :
重复执行的代码1
重复执行的代码2
......
else :
循环正常结束之后要执行的代码
其中的break和continue的用法与前面所讲解的一样
2.1 pass
可以用在代码未想好的区域,执行时不会报错
2.2 range()函数(生成一个整数数列)
-
range(stop)
r = range(10) print(r)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NlkqUVch-1665503723691)(python学习.assets/image-20221004100655075.png)]
-
range(start,stop)
-
range(start,stop,step)
r = range(0, 10) print(list(r)) r = range(0,10,2) print(list(r))
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VdS4XkAF-1665503723692)(python学习.assets/image-20221004213044413.png)]
不包含‘stop‘的数值
第六天
1.1 列表(增加、删除、插入)
不可修改
bicycles = ['trek','redline','specialized']
print(bicycles) #打印列表
print(bicycles[0]) #打印第一个列表元素
print(bicycles[0].title()) #打印第一列表元素,并使用方法title()函数
print(bicycles[-1]) #打印最后一个列表元素
message = f"My first bicycle was a{bicycle[1].title()}."
print(message) #使用列表中的值
gaibian = 'yamaha'
bicycles[0] = gaibian
print(bicycles) #修改列表中元素
bicycles.append('jieante') #在表头添加元素
print(bicycles)
bicycles.insert(0,'yadi') #插入元素,可在任何位置
print(bicycles)
del bicycles[-1] #1.删除列表中的元素,条件是知道其索引
print(bicycles)
bicycles.pop() #2.删除列表末尾的元素
print(bicycles)
print(poped_bicycles)
bicycles.pop(0) #3.删除列表中任意位置的元素,并弹出,被弹出后元素就不在列表中
print(bicycles)
bicycles.remove('yadi') #4.根据具体的值删除,后面可以同.pop()一样进行引用类似弹出
print(bicycles)
1.2 列表的排序
cars =['bmw','audi','toyota','subaru']
cars.sort() #给列表按字母顺序排序
print(cars)
cars.sorted() #给列表临时排序
print(cars)
基础复习(斯坦福公开课)
-
列表切片(:后的值不取)列表可以修改,元组不可以修改
nums = [1,2,3,4,5] # range is a built-in function that creates a list of integers print(nums) # Prints "[0, 1, 2, 3, 4]" print(nums[2:4]) # Get a slice from index 2 to 4 (exclusive); prints "[2, 3]" print(nums[2:]) # Get a slice from index 2 to the end; prints "[2, 3, 4]" print(nums[:2]) # Get a slice from the start to index 2 (exclusive); prints "[0, 1]print(nums[:]) # Get a slice of the whole list; prints ["0, 1, 2, 3, 4]" print(nums[:-1]) # Slice indices can be negative; prints ["0, 1, 2, 3]" nums[2:4] = [8, 9] # Assign a new sublist to a slice print(nums) # Prints "[0, 1, 8, 8, 4]"
-
列表中循环
# 遍历切片 dogs = ['a', 'b', 'c'] print('这里有两只狗:') for dog in dogs[:2] : print(dog)
-
转换原数据
nums = [0, 1, 2, 3, 4] squares = [] for x in nums: squares.append(x ** 2) print(squares) num = [0, 1 ,2 ,3 ,4] squars =[x ** 2 for x in num] print(squars)
-
列表里也可以包含条件:
nums = [0, 1, 2, 3, 4] even_squares = [x ** 2 for x in nums if x % 2 == 0] #按顺序执行三句代码 print(even_squares)
-
字典存储(键,值)信息量不受限制
n d = {'cat': 'cute', 'dog': 'furry'} # Create a new dictionary with some data
print(d['cat']) # Get an entry from a dictionary; prints "cute"
d['cow']= 'strong'
print(d)
print('cat' in d)
print(d['cow'])
# print(d['monkey']) #此键不在字典中
# print(d.get('fish'))字典中不存在,输出为none
print(d.get('cat')) # 字典中存在,直接输出该键的值
del d['cow']
print(d)
print(d.get('cow', 'n/a')) # 已经从字典中删除,所以输出为n/a
d = {'person': 2, 'cat': 4, 'spider': 8} # 遍历字典
for animal in d:
legs = d[animal]
print('A %s has %d legs' % (animal, legs))
- 集合
(是无序的)
animals = {'cat', 'dog'}
animals.add('fish') # Add an element to a set
print('fish' in animals)
print(len(animals)) # Number of elements in a set;
animals.add('cat') # 添加集合中已经有的元素,元素数量是不会改变的
print(animals)
print(len(animals))
animals.remove('cat')
print(animals)
print(len(animals))
animals = {'cat', 'dog', 'fish'}
for idx, animal in enumerate(animals):
print('#%d: %s' % (idx + 1, animal))
- 元组(不可以修改)与字典结合应用
d = {(x, x + 1): x for x in range(10)} # Create a dictionary with tuple keys
t = (5, 6) # Create a tuple元组,字典中的键
print(type(t))
print(d[t]) # 输出(5,6)对应的值
print(d[(1, 2)]) # 与上一行代码一个意思,输出(1,2)对应的值
- 功能函数
def sign(x):
if x > 0:
return 'positive'
elif x < 0:
return 'negative'
else:
return 'zero'
for x in [-1, 0, 1]:
print(sign(x))
def hello(name, loud=False):
if loud:
print('HELLO, %s' % name.upper())
else:
print('Hello, %s!' % name)
hello('Bob')
hello('Fred', loud=True)
def describe_pet(animal_type,pet_name): # 位置实参,可以多次调用就,一定要注意实参与形参的位置顺序
print(f"\ni have a{animal_type}.")
print(f"my {animal_type}'s name is {pet_name.title()}")
describe_pet('hamster','harry')
describe_pet(animal_type='hamster', pet_name='harry') # 关键字实参,直接明确指出各个实参对应的形参即直接赋值
def describe_pet(animal_type='hamster',pet_name): # 默认实参,直接给形参赋值一个
print(f"\ni have a{animal_type}.")
print(f"my {animal_type}'s name is {pet_name.title()}")
describe_pet('while') # 可以直接传递一个需要的实参,默认实参已有,两个实参只需传递一个
-
将函数存储在模块中
# module_name为模块,function_name为将被导入模块的函数 moudle_name.function_name() from moudle_name import function_name from moudle_name import function_0, function_1, function_2 from pizza import make_pizza as mp # 编写代码的过程中,给一些可能与现有程序名称出现矛盾的或名字过长的取别名 import pizza as p # 给模块指定别名 from pizza import * # *意为导入模块中的所有函数