0. 格式化字符串
'''
格式 化字符串
'''
print(1)
print(1,2,3,4)
a = 1
b = 2.1123
c = 'hello'
s = 'a = %d b = %f c = %s' % (a,b,c)
s += ' -- world'
print(s)
s = f'a = {a} b = {b} c = {c}'
print(s)
s = 'a = {0:5d} b = {1:.2f} c = {0}'.format(a,b,c)
print(s)
1. 函数概述
print()
input()
type()
int()
str()
float()
chr()
ord()
函数的作用:
用来将一段功能代码封装到一起,并起个名.
在使用时,只需要使用代码的名字即可
好处:
提高代码的开发效率
使代码更加简洁
提高代码的复用率
2. 函数的定义和调用(重点)
函数的定义格式:
def 函数名(参数列表…):
函数功能代码…
函数使用(调用):
函数名(值列表…)
'''
打印佛祖图案
'''
# 函数的定义
# 定义的函数在执行程序 时,并不会执行函数中的代码
def print_fozu():
print(" _ooOoo_ ")
print(" o8888888o ")
print(" 88 . 88 ")
print(" (| -_- |) ")
print(" O\\ = /O ")
print(" ____/`---'\\____ ")
print(" . ' \\| |// `. ")
print(" / \\||| : |||// \\ ")
print(" / _||||| -:- |||||- \\ ")
print(" | | \\\\\\ - /// | | ")
print(" | \\_| ''\\---/'' | | ")
print(" \\ .-\\__ `-` ___/-. / ")
print(" ___`. .' /--.--\\ `. . __ ")
print(" ."" '< `.___\\_<|>_/___.' >'"". ")
print(" | | : `- \\`.;`\\ _ /`;.`/ - ` : | | ")
print(" \\ \\ `-. \\_ __\\ /__ _/ .-` / / ")
print(" ======`-.____`-.___\\_____/___.-`____.-'====== ")
print(" `=---=' ")
print(" ")
print(" ............................................. ")
# 函数的使用
# 函数名()
# 当在使用函数时,也就是在函数调用 时,这时,才会到函数定义的代码 处去执行函数中的功能 代码
print_fozu()
print_fozu()
print_fozu()
3. 函数调用过程(重点)
a. 函数在定义时,函数体中的代码是不执行的
b. 当产生函数调用时,程序才会跳转到函数体中执行函数的代码
c. 函数体中的代码执行完成后,回到调用处 (重点理解)
'''
函数调用时,执行的过程
'''
# 定义函数
def show():
print('show run...')
print('start')
show()
print('end')
4. 函数文档注释(了解)
文档注释: DocString
写在程序文件开头的位置时,是程序文件的DocString,对整个程序进行说明
写在函数开头位置时,是对函数功能的说明, 函数的 DocString
'''
函数说明文档,DocString
'''
def show():
'''
这是show函数的函数说明文档
show 函数的作用是用来显示一个字符串
'''
print("hello world")
show()
help(show)
help(print)
5. 函数的实参和形参
实参:实际参数,是在函数调用时,括号中出现的数据称为实参
形参:形式参数,是在函数被调用时,接收函数调用传递过来的实参数据
实参和形参 在传递时,要一一对应.
'''
函数的实参和形参
'''
# 定义一个函数
def say_hi(name): # 形参
print('Hello ', name)
# say_hi('tom') # 实参
# say_hi('jack')
# say_hi('rose')
def my_sum(a, b):
print(a + b)
my_sum(1, 2)
# my_sum(1) # TypeError: my_sum() missing 1 required positional argument: 'b'
# my_sum(1,2,3) # TypeError: my_sum() takes 2 positional arguments but 3 were given
6. 函数的参数传递过程
参数在传递时,实参要和形参一一对应,不能多,也不能少,
实参会按顺序一一赋值给形参
'''
函数返回值
return
'''
def get_num():
return 1
# print(get_num())
# 将一个函数返回值 赋给一个变量
a = get_num()
print(a)
def show():
print(1)
print(2)
# return
print(3)
print(4)
a = show()
print(a)
print('over')
7. 函数返回值(难点,重点)
return 返回一个函数的结果
格式:
return 数据
一个函数,无论在哪遇到return,那么这个函数都会直接结束执行,回到调用处
return 后面可以没有数据
函数也可以没有return ,函数默认返回 None
'''
返回值 练习
需求:
封装一个函数
从键盘获取一个数字
'''
# 定义函数
def get_num():
k = input('请输入一个数字:')
k = int(k)
print(k)
# return k
# print(get_num() // 2)
'''
定义一个函数,传入两参数,并计算参数累加和返回
'''
def my_sum(a,b):
# 当有参数后,不需要对参数重新从键盘进行输入 新数据
# a = input('number1:')
# b = input('number2:')
return a + b
s = my_sum(11, 2)
print(s)
8. 函数包含多个return语句
一个函数中可以存在多个Return
但是,只能有一个语句有效
在执行顺序上,第一个遇到的Return 有效
'''
函数中存在多个Return语句
'''
def get_num():
return 1
return 2
return 3
# print(1)
# pirnt(2) #IndentationError: unexpected indent
print(get_num())
9. 认识 Bug
bug在程序中是指让程序出现崩溃的错误
'''
debug 工具的使用
'''
print(1)
print(2)
print(3)
a = 1
print(a)
a = 10
print(a)
print(4)
print(5)
侧边打入红点,虫子图标运行
10. Debug 调试程序
11. 关系(比较)运算符和逻辑运算符
关系运算符的结果是 bool 类型
== 等于 ( 注意不要写成一个=, 两个符号间没有间隔)
!= 不等于
\>
<
\>=
<=
'''
关系比较运算符
'''
def test_func():
# ==
print(1 == 2) # False
print(1 == 1) # True
print('*' * 10)
# !=
print(1 != 2) # True
print(1 == 2) # False
print('*' * 10)
# >
print(1 > 2) # False
print(2 > 1) # True
# <
print(1 < 2) # True
print(2 < 1) # False
# >= <=
print('*' * 10)
# >=
print(1 >= 2) # False
print(2 >= 1) # True
print(1 >= 1) # True
# <=
print(1 <= 2) # True
print(2 <= 1) # False
print(1 <= 1) # True
test_func()
逻辑运算符:
运算结果也是 bool 类型值
'''
逻辑运算符
'''
def test_func():
# 逻辑与 and 理解成乘法 ture 表示1 false 表示 0
print(True and True) # True
print(True and False) # False
print(False and True) # False
print(False and False) # False
# 逻辑或 or 理解成加法
print(True or True) # True
print(True or False) # True
print(False or True) # True
print(False or False) # False
# 逻辑非
print(not True) # False
print(not False) # True
print('*' * 10)
# a = int(input('number:'))
# print(a > 0 and a > 10) # True and False - > False
print(1 and 2 and 3)
print(0 and 2 and 3)
print(1 or 2 or 3)
print(0 or 2 or 3)
print(0 or 0 or 3)
test_func()
12. if 语句的格式和作用
格式:
if 条件:
满足条件执行的代码
'''
if 的使用格式
'''
def is_net(age):
if age >= 18:
print('可以上网')
age = int(input('请输入你的年龄 :'))
is_net(age)
'''
if 的使用格式
'''
def is_net(age):
if age >= 18:
print('可以上网')
else:
print('年龄不够,上什么网,滚去学习')
age = int(input('请输入你的年龄 :'))
is_net(age)
13. if-else 格式和作用
格式:
if 条件:
满足条件执行的代码
else:
不满足条件执行的代码
```python
'''
练习 :
定义一个函数
接收一个数字参数,判断该 数字是否是偶数
'''
# 定义一个函数,判断 是否是偶数
def is_even(n):
if n % 2 == 0 :
print(f'{n} 是偶数')
else:
print(f'{n} 是奇数')
m = int(input('please input number:'))
is_even(m)
```
if 判断条件,如果条件满足,执行if后的代码,如果条件不满足,执行else后面的代码
14. if-elif-else 格式和作用
if 条件1:
满足条件1执行的代码
elif 条件2:
满足条件2执行的代码
elif 条件3:
满足条件3执行的代码
...
else:
不满足条件执行的代码
顺序判断,先判断条件1,满足条件,执行条件1后面的代码
如果不满足条件1,那么继续判断条件2,如果满足执行条件2后面的代码
如果不满足条件2,继续向后判断,满足哪个条件,执行哪个条件后的代码
else是指定如果所有的前面的条件都不满足,那么执行else后面的代码
else是一个可选的模块,可以省略不写,但是一般会写上,用来容错.
'''
if -elif -else 格式
'''
def is_week_day(day):
if day == '1' or day == '一':
print('星期一')
elif day == '2' or day == '二':
print('星期二')
elif day == '3' or day == '三':
print('星期三')
elif day == '4' or day == '四':
print('星期四')
elif day == '5' or day == '五':
print('星期五')
elif day == '6' or day == '六':
print('星期六')
elif day == '7' or day == '日':
print('星期日')
else:
print('输入的日期不对')
d = input('input:')
is_week_day(d)
15. if-elif-else 练习
16. if 语句的嵌套的作用
if 条件:
if 条件:
if 条件:
'''
if 嵌套格式 和练习
'''
# 定义一个函数,用来判断成绩的优良中差不及格
def is_socre_level(score):
# 先判断输入的成绩 是否有效
if score >= 0 and score <= 100:
# 成绩有效,判断级别
if score >= 90:
print(f'得分 {score }, 级别优')
elif score >= 80:
print(f'得分 {score }, 级别良')
elif score >= 70:
print(f'得分 {score}, 级别中')
elif score >= 60:
print(f'得分 {score }, 级别差')
else:
print(f'得分 {score }, 级别不及格')
else:
print(f'输入的成绩 {score} 是无效的')
s = int(input('input score:'))
is_socre_level(s)
17. 随机数Random
1. 导入 random 模块
2. random.randint(n1,n2)
通过这个函数,得到一个[n1, n2]
'''
随机数的使用
'''
# 导入 模块
import random
# 使用随机数模块获取一个随机数
n = random.randint(0, 2) # [0,1,2]
print(n)
18. 猜拳游戏
石头 0
剪子 1
布 2
1.先定义一个函数
2.定义一个随机数
3.获取玩家输入的值
4.将石头剪子布类型转换
5.将玩家输入的值与随机产生的值相互比较大小
6.玩家 0 电脑1 玩家1 电脑2 玩家2 电脑0 则输出值玩家赢
7.玩家与电脑相同则输出值平局
8.否则输出值 电脑赢
9.调用函数
10获取调用的值
'''
a. 两个角色 玩家 player - 电脑 robot
b. 动作: 石头 0 , 剪刀 1, 布 2
c. 我的出拳: 由输入完成
d. 电脑的出拳: 随机数完成
e. 比较出拳
f. 相等 - 平局
g. 玩家赢: p0:r1 p1:r2 p2:r0
h. 剩下的情况就是电脑赢
'''
# 导入随机数模块
import random
# 定义一个函数
def game():
# 定义一个玩家变量,从键盘输入值
player = int(input('请输入一个状态(石头 0 , 剪刀 1, 布 2):'))
# 定义一个电脑变量,使用随机数获取状态
robot = random.randint(0, 2)
# 比较状态
# 先状态平局
if player == robot:
print('平局')
# 再判断玩家赢的状态
elif ((player == 0) and (robot == 1)) or ((player == 1) and (robot == 2)) or ((player == 2) and (robot == 0)):
print('玩家赢')
# 剩下就是电脑赢的状态
else:
print('你输出,电脑胜出')
# 函数调用,开始游戏
game()
'''
思考题:
在这个题目上的基础上,让结果更加清晰
升级题:
棒子老虎鸡:
棒子-> 老虎 -> 鸡 -> 虫 -> 棒子
扩展题:
将游戏重复执行,三局两胜
'''
19. if 语句实现三目运算符(了解)
'''
if 实现的三目运算符
'''
def test_func():
# 输入一个数,判断奇偶
n = int(input('number:'))
# s = '偶数' if n % 2 == 0 else '奇数'
s = '奇数' if n % 2 != 0 else '偶数'
print(s)
test_func()
20. 循环语句while
'''
输出 1- 100 之间的值
'''
# 定义一个函数
def test_func():
# 定义一个循环变量并有初始值
i = 1
# 判断条件
while i <= 100:
# 循环体
print(i)
# 改变循环变量
i += 1
# 调用函数执行
test_func()
---- 以下为备用----
break
continue
while 循环嵌套
打印正方形
打印三角形
打印九九乘法表
猜拳游戏
for-in 循环& range
for-in-else # for 循环不被breek中断时, 执行else语句; break则不执行
上,让结果更加清晰
升级题:
棒子老虎鸡:
棒子-> 老虎 -> 鸡 -> 虫 -> 棒子
扩展题:
将游戏重复执行,三局两胜
‘’’
## 19. if 语句实现三目运算符(了解)
```python
'''
if 实现的三目运算符
'''
def test_func():
# 输入一个数,判断奇偶
n = int(input('number:'))
# s = '偶数' if n % 2 == 0 else '奇数'
s = '奇数' if n % 2 != 0 else '偶数'
print(s)
test_func()
20. 循环语句while
'''
输出 1- 100 之间的值
'''
# 定义一个函数
def test_func():
# 定义一个循环变量并有初始值
i = 1
# 判断条件
while i <= 100:
# 循环体
print(i)
# 改变循环变量
i += 1
# 调用函数执行
test_func()
---- 以下为备用----
break
continue
while 循环嵌套
打印正方形
打印三角形
打印九九乘法表
猜拳游戏
for-in 循环& range
for-in-else # for 循环不被breek中断时, 执行else语句; break则不执行