Python学习笔记 -一到五

第一阶段 第一章 python入门

小技巧:上注释使用(ctrl+/)

print("") 输出的时候是,输出的就是“”内的内容

如果是使用变量的话,不加””双引号,才可以输出变量的内容。

eg:num = 111 而使用print("num")所输出的也就是num,调用变量不要加“” 而且print是没有结果输出的,只是打印的功能;

print("我","是")  print可以多个输出内容中间用逗号隔开!!! (需要全部是英文的符号!)

type()是看数据里的类型 例如type("奥特曼") ;type(123.2) ;type(123) 分别为 str ; float ; int

第一阶段 第二章

1.数据类型;变量

下面是数据类型的一个转换案例

1.数字变字符串,可以成功

num_str = str(11)

print(type(num_str),num_str)

输出内容为 <class 'str'> 11

这样就将一个int的类型 转变为了一个字符串str的类型

2.字符串转数字

 

 引号括起来的就是字符串,所以万物皆可用字符串表示,带个双引号就是字符串,但是字符串可不能转为其他的。(比如想把字符串转为数字,得确保内容也是数字才行

 浮点数转整数,要注意精度丢失

 

 总结如下

2.标识符

Python中,标识符命名的规则主要有3类

1.内容限定

标识符命名中,只允许出现:

英文;中文;数字;下划线 (_); 这四类元素。

其余任何内容都不被允许。

注意

1.不推荐使用中文

2.数字不可以开头(a;a_b;_a;_a_b;这些是ok的) 1a就是错的a1可以

2.大小写敏感

以定义变量为例:

Andy=“安迪1”

andy=“安迪2

字母a的大写和小写,是完全能够区分的。

3.不可使用关键字

Python中有一系列单词,称之为关键字关键字在Python中都有特定用途我们不可以使用它们作为标识符

4.标识符的命名规范

变量名;类名;方法名

不同的标识符,有不同的规范

我们目前只接触到了:变量。所以,目前学习:变量的命名规范。

见名知意

明了:尽量做到,看到名字,就知道是什么意思

简洁:尽量在确保“明了”的前提下,减少名字的长度

下划线命名法

多个单词组合变量名,要使用下划线做分隔。

英文字母全小写

命名变量中的英文字母,应全部小写:

3.运算符

算术(数学)运算符

 

 **表示平方

赋值运算符(变量)

 复合赋值运算符

 4.字符串拓展

字符串的三种定义方式

字符串在Python中有多种定义形式:(常用的是双引号定义法

 

 三引号定义法,和多行注释的写法一样,同样支持换行操作。

使用变量接收它,它就是字符串;

不使用变量接收它,就可以作为多行注释使用。

在python中常用的是双引号定义变量法

引号嵌套

如果我想要定义的字符串本身,是包含:单引号、双引号自身呢? 如何写?

单引号定义法,可以内含双引号;(                       )

双引号定义法,可以内含单引号;(                 )

可以使用转字符 (  \   )来将引号解除效用,变成普通字符串,写在符号前面!

 输出结果

 字符串拼接(通过加号连接)

 注意:如果是变量拼接的话,在print后的括号里面的变量是不能上引号的,因为print的作用就是输出引号内的东西,你上了引号就不输出变量的包含的意思了。

 无法和非字符串类型进行拼接。(也就是拼接的变量类型只能是字符串,也就是上引号的内容)

字符串格式化(这个可以使得非字符段的不同类型进行拼接)

我们会发现,这个拼接字符串也不好用啊

1变量过多,拼接起来实在是太麻烦了;

2.字符串无法和数字或其它类型完成拼接

%s (是在变量内占位置的)

%变量(是在引号外的)

 其中的,%s

%表示:我要占位

s表示:将变量变成字符串放入占位的地方所以,综合起来的意思就是:我先占个位置,等一会有个变量过来,我把它变成字符串放到占位的位置

多个变量占位变量要用括号括起来

按照占位的顺序填入,并且使用逗号隔开~

数字类型也是可以的

 

 

 格式化的精度控制

基于上面小红书的股票价格发现,12.11的浮点数没有控制精度导致以12.110000输出了。

 我们可以使用辅助符号"m.n"来控制数据的宽度和精度

m,控制数字总个数,要求是数字(很少使用),设置的宽度小于数字自身,不生效

.n,控制小数点精度,要求是数字,会进行小数的四舍五入

示例:

%5d:表示将整数的宽度控制在5位,如数字11,被设置为5d,就会变成:[空格][空格][空格]11,用三个空格补足宽度。这个5就是m,没有.n的体现

%5.2f:表示将宽度控制为5,将小数点精度设置为2小数点和小数部分也算入宽度计算。如,对11.345设置了%7.2f后,结果是:[空格][空格]11.35。2个空格补足宽T度,小数部分限制2位精度后,四舍五入为.35

%.2f:表示不限制宽度,只设置小数点精度为2,如11.345设置%.2f后,结果是11.35

 字符串格式化-快速写法(format:格式化)

格式 f {}  前面有一个就行~ 写到双引号外面

简洁快速;不要求字段的格式;不要求数据精度;优雅简介!

大括号就行占位,里面填入对应的变量即可~

1.可以通过

f”(变量){变量)”的方式进行快速格式化

2.这种方式

不理会类型

不做精度控制

适合对精度没有要求的时候快速使用

 对表达式进行格式化

刚刚的演示,都是基于变量的

可是,我想更加优雅些,少写点代码,直接对“表达式”进行格式化是否可行呢?

那么,我们先了解一下什么是表达式。

表达式:一条具有明确执行结果代码语句

如:

1+1、5*2,就是表达式,因为有具体的结果,结果是一个数字

又或者,常见的变量定义:

name=“张三" age = 11 + 11

表达式是什么?

表达式就是一个具有明确结果的代码语句,如1+1、type(“字符串”)、35等在变量定义的时候,如age=11+11,等号右侧的就是表达式,也就是有具体的结果,将结果赋值给了等号左侧的变量

如格式化表达式?

f“{}”

%s\%d\%f%(表达式、表达式、表达式)

测试习题

name = "小红书"
stock_price = 17.33
stock_code = "00123"
stock_price_daily_factor = 1.2
growth_days = 12
print(f"公司名称为:{name},股票代码为:{stock_code},当前股价为:{stock_price}")
print("每日的增长系数为:%2.1f,经过12天的增长,股价达到了:%.1f"%(stock_price_daily_factor,stock_price_daily_factor**growth_days))

 

 这个地方有一个bug点:数字不能以0开头,所以只能使用字符串“00293”

5.数据输入

input语句(函数)

我们前面学习过print语句 (函数),可以完成将内容(字面量、变量等)输出到屏幕上。

在Python中,与之对应的还有一个input语句,用来获取键盘输入。

数据输出:print

数据输入:input

使用上也非常简单:

使用input()语句可以从键盘获取输入

使用一个变量接收(存储)input语句获取的键盘输入数据即可(变量 = input()

然后再使用print函数把 存储input从键盘输入的数据  的变量打印出来

print("你的银行卡密码是多少?")
secrt = input("你的银行卡密码是多少?")
print(f"系统检测你的密码为:{secrt}")

 

 在前面的代码中,输出”请告诉我你是谁?“的print语句其实是多余的

input()语句其实是可以在要求使用者输入内容前,输出提示内容的哦,直接在input的括号内输入的字句就是提醒,类似print的方式,方式如下:

 注意:input默认接受的数据类型都是:字符串,如果需要转换数据类型的话,需要自行转换(浮点数或者数字)

 总结:

1.input()语句的功能是,获取键盘输入的数据

2.可以使用:input(提示信息),用以在使用者输入内容之前显示提示信息。

3.要注意,无论键盘输入什么类型的数据,获取到的数据永远都是字符串类型

课后练习:

user_name = input("请输入你的名字:")
user_type = input("请输入你的类型:")
print(f"您好,尊贵的{user_name},您是{user_type},啊哈哈哈")

第三章节 python判断语句

1.布尔类型和比较运算符

掌握布尔类型用于表示:真和假

掌握比较运算符用于计算: 真和假

布尔类型的字面量: 有且只有这两个,在python里需要大写首字母

True 表示真(是、肯定)

False 表示假 (否、否定)

定义变量存储布尔类型数据:

变量名称 = 布尔类型字面量

 布尔类型不仅可以自行定义同时也可以通过计算的来。

也就是使用比较运算符进行比较运算得到布尔类型的结果

 在python中,==也是表示比较的,常见的比较运算符有:

 2.if语句的基本格式

掌握逻辑判断语句(if)的基本语法格式

掌握布尔类型数据,在判断语句中的作用

 Python有点类似yaml文件,书写格式方面,通过缩进来判断归属的。

 4个空格的归属来判断是不是归属于if

 If的注意点:

判断语句的结果,必须是布尔类型True或 False

True会执行if内的代码语句False则不会执行

归属于if判断的代码语句块,需在前方填充4个空格缩进Python通过缩进判断代码块的归属关系。

测试题:

结合前面学习的input输入语句,完成如下案例:

  1. 通过input语句,获取键盘输入,为变量age赋值。 (注意转换成数字类型)
  2. Input接受的值都是字符串
  3. 通过if判断是否是成年人,满足条件则输出提示信息,如下

欢迎来到黑马儿童游乐场,儿童免费,成人收费请输入你的年龄:30您已成年,游玩需要补票10元祝您游玩愉快。

提示: 您已成年,需要补票的信息输出,来自if判断

print("欢迎来到黑马游乐场,儿童免费,成人收费")
age = input("请输入您的年龄:")
age = int(input("请输入您的年龄:"))
if age >= 18:
  print(f"您的年龄为{age},类型为,{type(age)},您需要缴纳费用99元")
else:
  print("小朋友是不收钱哒,免费玩")
print("祝您游玩愉快")

这个是age上的字符串,所以我使用引号括起来了。

 这个我使用的是数字,转换了一下类型为int,age也不需要上引号,当字符串了。

 这样也行

3.if else 语句

if满足条件会执行相应的代码语句,如果不满足呢?

有没有不满足的情况下,可供执行的代码呢?

if else 语句可以实现

If 和else是同级的~

 

案例

 总结:

1.if else 语句,其中

if和其代码块,条件满足时执行

else搭配if的判断条件,当不满足的时候执行

2.if else语句的注意事项:

else不需要判断条件,当if的条件不满足时,else执行

else的代码块,同样要4个空格作为缩进

练习题:通过input语句获取键盘输入的身高判断身高是否超过120cm,并通过print给出提示信息。

4.if elif else语句

案例

某些场景下,判断条件不止一个,可能有多个。

(elif可以有无数个,后面和if一样跟条件)

且要注意,if和elif是互斥的,if满足条件了,elif就没用了

Else 是if和elif都没有满足之后的最后选择

比如这个满足了身高小于120,即便输入了vip级别,但是也和if互斥了,没有用处。

变量 = 判断条件

注意项

Elif语句可以书写多个~

stature = int(input("请输入您的身高 :"))
vip_stat =int(input("您是几级工程师(1-5):"))
day_time = int(input("请回答今天是周几(1-7:)"))
print("欢迎来到北京动物园")
if  int(input("请输入您的身高 :")) < 120:
    print("您的身高不高于120,不需要买票")
elif int(input("您是几级工程师(1-5):")) > 3:
    print("级别大于2,可以免费玩")
elif int(input("请回答今天是周几(1-7:)")) == 1:
    print("今天是周一,可以免费玩")
else:
    print("不好意思都不满足,需要买票")
print("祝你游玩愉快")

 互斥且有顺序

 空格缩进同样不可省略

 节省代码量的写法:

 总结

elif可以写多个

判断是互斥且有序的,上一个满足后面的就不会判断了

可以在条件判断中,直接写input语句,节省代码量

小练习猜数字

import random
num = random.randint(1, 10)
guess_num = int(input("输入你要猜测的数字:"))

if guess_num == num:
    print("恭喜你,第一次就猜中了")
else:
    if guess_num > num:
        print("你猜的数字大于随机的数字")
    else:
        print("你猜的数字小于于随机的数字")

    guess_num = int(input("请第二次输入你要猜测的数字:"))
    if guess_num == num:
        print("恭喜你,第二次猜中了")
    else:
        if guess_num > num:
            print("你猜的数字大于随机的数字")
        else:
            print("你猜的数字小于于随机的数字")

            guess_num = int(input("请第三次输入你要猜测的数字:"))
            if guess_num == num:
                print("恭喜你,第三次猜中了")
            else:
                print("三次机会没了")
                print(f"数字是{num}")

5.判断语句的嵌套

有很多场景,不仅仅是多个并列条件,还会有满足前置条件才会二次判断的多层判断需求。

 基础语法为

 简单嵌套实例:

判断有2层

当外层if满足条件(图中编号1)时,才会执行内层if判断( 图中编号2)

当外层if( 编号1)不满足,直接执行外层esle

比如:

 小练习,发奖金需要满足条件:

1.必须是大于等于18岁小于30岁的成年人

2.同时入职时间需满足大于两年,或者级别大于3才可领取

写代码记得,先随便设置个变量,再去简单勾勒大纲,再去逐渐优化~

总结

  1. 嵌套判断语句可以用于多条件多层次的逻辑判断
  2. 嵌套判断语句可以根据需求,自由组合if elif else来构建多层次判断
  3. 嵌套判断语句,一定要注意空格缩进,Python通过空格缩进来决定层次关系

6.实战案例

案例需求:定义一个数字(1~10,随机产生),通过3次判断来猜出来数字

案例要求:

1.数字随机产生,范围1-10

2.有3次机会猜测数字,通过3层嵌套判断实现

3.每次猜不中,会提示大了或小了

提示,通过如下代码,可以定义一个变量num,变量内存储随机数字;

可以使用print(num)去看

import random
num = random.randint(1, 10)
guess_num = int(input("输入你要猜测的数字:"))

if guess_num == num:
    print("恭喜你,第一次就猜中了")
else:
    if guess_num > num:
        print("你猜的数字大于随机的数字")
    else:
        print("你猜的数字小于于随机的数字")

    guess_num = int(input("请第二次输入你要猜测的数字:"))
    if guess_num == num:
        print("恭喜你,第二次猜中了")
    else:
        if guess_num > num:
            print("你猜的数字大于随机的数字")
        else:
            print("你猜的数字小于于随机的数字")

            guess_num = int(input("请第三次输入你要猜测的数字:"))
            if guess_num == num:
                print("恭喜你,第三次猜中了")
            else:
                print("三次机会没了")
                print(f"数字是{num}")

第四章节 while循环

循环普遍存在于日常生活中,同样,在程序中,循环功能也是至关重要的基础功能。

1. while循环的基础语法

While循环后面需要跟着的是 条件 (布尔类型(对错);运算类型)

注意点

1.while的条件需得到布尔类型(True表示继续循环,False表示结束循环

2.需要设置循环终止的条件,如i+= 1配合i< 100,就能确保100次后停止,否则将无限循环

3.空格缩进和if判断一样,都需要设置

 计算案例:1-100的和

 2.while循环的基础案例

设置一个范围1-100的随机整数变量,通过while循环,配合input语句,判断输入的数字是否等于随机数

无限次机会,直到猜中为止

每一次猜不中,会提示大了或小了

猜完数字后,提示猜了几次

提示:

无限次机会,终止条件不适合用数字累加来判断

可以考虑布尔类型本身(True or False}

需要提示几次猜中,就需要提供数字累加功能

 Count每输入一次数字就记录一次;if还做了嵌套查询~

3.while循环的嵌套应用

掌握while嵌套循环基本格式

i = 1
while i <= 100:
    print(f"今天是第{i}天,准备表白......")
    j = 1
    while j <= 10:
        print(f"送给小美第{j}只玫瑰花")
        j+= 1
    print("小美,我喜欢你")
    i+=1
print(f"坚持到第{i - 1}天,表白成功")

 注意:

同判断语句的嵌套一样,循环语句的嵌套,要注意空格缩进

基于空格缩进来决定层次关系

注意条件的设置,避免出现无限循环

4.while循环的嵌套案例

print输出不换行

默认print语句输出内容会自动换行,如下图:

在即将完成的案例中,我们需要使用print语句,输出不换行的功能,非常简单,实现方式如下:

 在print后的括号里加入一个end=’’就可以了

制表符\t

在字符串中,有一个特殊符号: t,效果等同于在键盘上按下:tab键。

它可以让我们的多行字符串进行对齐。

 练习案例-打印九九乘法表

通过while循环,输出如下九九乘法表内容

i = 1
while i <= 9:
    j = 1
    while j <= i:
        print(f"{i} * {j} = {i * j}\t",end = '')
        j += 1
    i += 1
    print()

5.for循环的基础语法

基础语法

除了while循环语句外,Python同样提供了for循环语句。

两者能完成的功能基本差不多,但仍有一些区别:

while循环的循环条件是自定义的,自行控制循环条件

for循环是一种”轮询”机制,是对一批内容进行”逐个处理'

生活案例

洗碗,一个个洗干净

剥蒜,个个剥干净

送快递,一个个送达

程序中的for循环

 代码表示:一个一个取字符

 可以看出,for循环是将字符串的内容:依次取出

所以,for循环也被称之为: 遍历循环

for循环注意点

# 定义字符串name

name = "itheima”

# for循环处理字符串

for x in name:

print(x)

同while循环不同,for循环是无法定义循环条件的只能从被处理的数据集中,依次取出内容进行处理。

所以,理论上讲,Python的for循环无法构建无限循环(被处理的数据集不可能无限大)

小练习

 

In后的序列可以使用变量来充当

 这样不需要去定义a

range语句

for 临时变量 in待处理数据集

循环满足条件时执行的代码

语法中的:待处理数据集,严格来说,称之为:序列类型

序列类型指,其内容可以一个个依次取出的一种类型,包括:

字符串

列表

元组

for循环语句,本质上是遍历:序列类型

尽管除字符串外,其它的序列类型目前没学习到,但是不妨碍我们通过学习range语句,获得一个简单的数字序列

语法

 一般rang是配合for来使用的!

For   x  in rang(10):

总结:

 语法1从0开始,到num结束(不含num本身)

语法2从num1开始,到num2结束(不含num2本身)

语法3从num1开始,到num2结束(不含num2本身)步长以step值为准(默认为1)

小练习

count = 0
for i in range(90,100):
    if i % 2 == 0:
        count += 1
print(f"90 到 100之间不包含100有{count}个偶数")

 

 变量作用域

 临时变量,在编程规范上,作用范围(作用域),只限定在

for循环内部如果在for循环外部访问临时变量:实际上是可以访问到的

在编程规范上,是不允许、不建议这么做的(缩进!)

6.for循环的嵌套应用

 

 For 和 while的嵌套使用~

 如果是while的话,它设置的变量要在上面,不能位于最上面for的前面。


7.循环中断:break和continue

思考:无论是while循环或是for循环,都是重复性的执行特定操作在这个重复的过程中,会出现一些其它情况让我们不得不

  1. 暂时跳过某次循环,直接进行下一次
  2. 提前退出循环,不在继续

对于这种场景,Python提供continue和break关键字

用以对循环进行临时跳过直接结束

Continue

continue关键字用于: 中断本次循环,直接进入下一次循环

continue可以用于:for循环和while循环,效果一致

 案例

 到了语句2的时候就结束了

嵌套循环

 案例分析:

这个的循环:外部循环,输出一个语句1,然后进入到内层循环,输出一个语句2,当往下走语句3的时候,continue了,不输出语句3了,继续输出语句2,循环如此,每次都到了语句3就不输出,循环5次语句2,然后输出一个外层循环的语句4。   这样按照5次的外部就结束。(结果:一个语句1,5个语句2,一个语句4......这样基于外层一共5次)

Break

break关键字用于:直接结束循环

break可以用于:for循环和while循环,效果一致

对比continue和break

 Break的嵌套

 先是外部循环一个语句1,然后进到内层循环出一个语句2,碰到break,整体循环结束,(不像continue,只是跳过语句3,还要执行语句2得100次,这次直接退出内部循环),然后输出一个外层的语句4,然后继续这么外部的10次结束。

8.综合案例

money = 10000
for i in range(1,21):
    import random
    score = random.randint(1,10)
    if score < 5:
        print(f"员工{i}不满足绩效,不发工资,下一位")
        continue
    if money >= 1000:
        money -= 1000
        print(f"员工{i}满足绩效分,发工资1000,工资余额{money}元")
    else:
        print(f"公司余额不足,剩余{money}元,不发了")
        break


第五章节 python函数

1.函数介绍

快速体验函数的使用

函数:是组织好的,可重复使用的,用来实现特定功能的代码段

例子:

因为,len()是Python内置的函数:

  1. 官方提前写好的
  2. 以重复使用
  3. 实现统计长度这一特定功能的代码段

定义一个测试字符串长度的函数:

def my_len(abc):
    count = 0
    for i in abc:
        count += 1
    print(f"字符串{abc}的长度为{count}")

str1 = "sdfs"

my_len(str1)

为什么要学习、使用函数呢 ?

为了得到一个针对特定需求、可供重复利用的代码段提高程序的复用性,减少重复性代码,提高开发效率

1.函数是:

  1. 组织好的、可重复使用的、用来实现特定功能的代码段

2.使用函数的好处是:

  1. 将功能封装在函数内,可供随时随地重复利用
  2. 提高代码的复用性,减少重复代码,提高开发效率

2.函数的定义

掌握函数的基础定义语法

函数体:就是要做的事情

目前不需要去管传入参数以及return返回值,后续章节会讲到。

目前:def 函数名 函数体

比如

 包括 def 函数名(参数):

注意这里没有定义参数,但是调用参数的话,需要写上函数名

参数如不需要,可以省略(后续章节讲解)

返回值如不需要,可以省略(后续童节讲解)

函数必须先定义后使用

总结

1.函数的定义语法

 2.函数使用步骤:

先定义函数

后调用函数

3.注意事项:

参数不需要,可以省略

返回值不需要,可以省略

3.函数的参数

掌握函数传入参数的使用

函数的传入参数

传入参数的功能是:在函数进行计算的时候,接受外部(调用时)提供的数据

 

 

 函数定义中,提供的xy,称之为:形式参数(形参),表示函数声明将要使用2个参数。

参数之间使用逗号进行分隔

函数调用中,提供的56,称之为: 实际参数(实参),表示函数执行时真正使用的参数值。

传入的时候,按照顺序传入数据,使用逗号分隔

传入参数的数量是不受限制的。

可以不使用参数

也可以仅使用任意N个参数

总结

1.函数的传入参数的作用是?

在函数运行的时候,接受外部传入的数据

2.使用方法(如上)

3.注意事项

函数定义中的参数,称之为形式参数

函数调用中的参数,称之为实际参数

函数的参数数量不限,使用逗号分隔开

传入参数的时候,要和形式参数一一对应,逗号隔开

小练习

def safetem(data):
    if data >= 37.5:
        print(f"您的体温为{data},需要接受隔离")
    else:
        print(f"您的体温小于{37.5},不需要隔离")
safetem(37)

4.函数的返回值

1.掌握函数返回值的定义

 语法:

 意思就是return的作用是将传参后的结果给了返回值;

有了这个return就可以去使用变量去接收返回值,最后print的就是变量了

如图,变量就能接收到函数的返回值

语法就是: 通过return关键字,就能向调用者返回数据

总结

1什么是函数返回值?

函数在执行完成后,返回给调用者的结果

2.返回值的应用语法

使用关键字: return 来返回结果

3.注意:

函数体在遇到return后就结束了,所以写在return后的代码不会执行

None类型

思考:如果函数没有使用return语句返回数据,那么函数有返回值吗?

实际上是:有的。

python中有一个特殊的字面量: None,其类型是:<classNoneType)>无返回值的函数,实际上就是返回了:None这个字面量

None表示:空的、无实际意义的意思函数返回的None)就表示,这个函数没有返回什么有意义的内容也就是返回了空的意思

 这个return后用none去做返回值,和上面返回的结果是一致的。

None类型的应用场景

None作为一个特殊的字面量,用于表示:空、无意义,其有非常多的应用场景。

  1. 用在函数无返回值上
  2. 用在if判断上

相反的话

 在if判断中,None等同于False

一般用于在函数中主动返回None,配合if判断做相关处理

3.用于声明无内容的变量上

定义变量,但暂时不需要变量有具体值,可以用None来代替

 总结

1.什么是None

None是类型'NoneType'的字面量用于表示:空的、无意义的

2.函数如何返回None

不使用return语句即返回None

主动return None

3使用场景

函数返回值

if判断

变量定义

5.函数说明文档

掌握通过注释对函数进行解释说明

函数是纯代码语言,想要理解其含义,就需要一行行的去阅读理解代码,效率比较低。

我们可以给函数添加说明文档

辅助理解函数的作用

语法如下:

param:参数

通过多行注释的形式,对函数进行说明解释,内容应写在函数体之前

总结

1.函数说明文档的作用是?

对函数进行说明解释,帮助更好理解函数的功能;

2.定义语法

如上所示

:param用于解释参数

:Retun用干解释返回值

6.函数的嵌套调用

什么是函数的嵌套

所谓函数嵌套调用指的是一个函数里面又调用了另外一个函数;

如果函数A中,调用了另外一个函数B,那么先把函数B中的任务都执行完毕之后才会回到上次函数A执行的位置

 

 总结

1.什么是嵌套调用

在一个函数中,调用另外一个函数

2.执行流程

函数A中执行到调用函数B的语句,会将函数B全部执行完成后,继续执行函数A的剩余内容


7.变量的作用域

变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用)主要分为两类:局部变量和全局变量

局部变量

所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效

 这里的testA()已经调用完成,下面的print(num)已经用不了销毁的num变量了。

 局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量

全局变量

所谓全局变量,指的是在函数体内、外都能生效的变量

思考:如果有一个数据,在函数A和函数B中都要使用,该怎么办?

答:将这个数据存储在一个全局变量里面

global关键字

思考:“testB函数需要修改变量num的值为200,如何修改程序?

正常思路:我们想让num去取上200,因为print(num)是在test_b下面执行的,但是看样子不行,testb里的数值num成了具备变量了,那么如何去操作呢?

num = 100
def test_a():
    print(f"test_a :{num}")
def test_b():
    global num
    num = 200
    print(f"test_b :{num}")
test_a()
test_b()
print(num)

使用global去声明一下,现在某个函数内的变量为全局变量了,改了之前函数外面的全局变量的值!

总结:

1.什么是局部变量

作用范围在函数内部,在函数外部无法使用

2.什么是全局变量

在函数内部和外部均可使用

3如何将函数内定义的变量声明为全局变量

使用global关键字,global 变量

8.综合案例

 需求

 我写的

money = 50
while True:
    name = input("请输入您的姓名:")
    #查询余额
    def check_momey(x):
        print(f"您当前的余额为{money}元")
        menu()
    # 存款
    def save_momey(y):
        global money
        cu_money = int(input("输入存款金额:"))
        money = cu_money + money
        print(f"您成功存入{cu_money}元,当前余额为{money}元")
        menu()
    #取款
    def take_money(z):
        global money
        qu_money = int(input("输入取款金额:"))
        money = money - qu_money
        print(f"您成功取出{qu_money}元,当前余额为{money}元")
        menu()
    #退出

 #主菜单函数
    def menu():
        print("主菜单\t")
        print("1:查询账户余额\t")
        print("2:存款\t")
        print("3:取款\t")
        print("4:退出\t")
        options = int(input(f"{name},欢迎来到奥特曼ATM,请选择操作您要执行的操作:"))
        if options == 1:
            check_momey(options)
        elif options == 2:
            save_momey(options)
        elif options == 3:
            take_money(options)
        else:
            sys.exit(0)

 老师写的

 

 几则深思点

 这个就未打印query函数的表头,穿入了false的参数,导致if判断为错

 Continue跳出循环,从头来,break是终止循环


猜你喜欢

转载自blog.csdn.net/m0_72264240/article/details/130099010