Python学习笔记整理(三)

PS:原定是准备一次直接搞很多把文章更新到学习进度的,但是苦于一直在复习备考,忙到脑壳昏,最近才腾出时间来补笔记,悲催的预备码农,在码字之余还需要忍受数学的苦痛。

回归正题,在前文,我们说到了高级的格式化方法,那么在下面,我们就将接触到涉及到输入输出方法的数据类型、循环格式之类,难度相较之前会增加不少,同时,为了学习的连贯性,我将开始把很多相关知识放在一起去说,而非零散地去讲,让大家在学习之后,最快的得以应用。

数字类型补充

整型数字转换

整型数字类型为 int ,那么将一个其他类型的数字转化成所需的整型数字类型很简单,只需要对这个数字使用 int() 函数即可,例如

a=0.115
b='356556'

上述的a和b就可以利用 int() 转换为整型,那么问题来了,所有的数字都可以转化为整型吗?不是这样的,以下两种类型的数字才可以转为整型:1.浮点型可以转为整型。2.去掉引号就是一个整数的字符串可以转整型。对于第一种,转为整型后,去掉小数点及后面的小数部分,对于第二种,转型之后,将引号去掉。

浮点型数字转换

其他类型的数字转为浮点型的数字同样具有要求:1.整型可以转为浮点型。2.去掉引号就是一个浮点数的字符串可以转整型。具体操作方法与上面一样,只是函数是float()

布尔型数字转换

转换函数为 bool() ,相较于前面两种转换有数据类型的限制, bool() 对于所有的数据类型都可以转换(转为布尔型的数据,即 False 或 True),但需要记住,所有表示空值的的原数据和表示0的数据均转为False,其他转为 True。

分支结构

if else语句(单分支结构)

if else基本语法如下:

if 条件:
    代码块1
else:
    代码块2

在分支结构中,按照 if 后面的条件进行判断,满足条件走 if 分支,不满足则走else分支,而这个分支被执行,就意味着分支下的所有代码都将被执行。

这里需要记住的点是,在单分支结构中,走了其中某一条分支之后,不会再运行其他分支的语句。

练习:使用分支结构判断一个年份是否为闰年,结果返回为闰年或者平年。

``

year = int(input())
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
    print(f'{year}是闰年。')
else:
    print(f'{year}是平年。')
#     判断153、471、499这三个数字是否是水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是⼀个⽔仙花数,因为 1³ + 5³ + 3³  等于 153。
num1 = 153
unit = num1 % 10
decade = num1 // 10 % 10
hundred = num1 // 100
if unit ** 3 + decade ** 3 + hundred ** 3 == num1:
    print(f'{num1}是水仙花数')
else:
    print(f'{num1}不是水仙花数')

三目运算符

三目运算符对于 if else 进行了优化,使得代码更加精简。

三目运算符:

代码1 if 判别条件 else 代码2

上面的代码中,开始运算时先对 if 后面的判别条件进行一次判断,若判别结果为 True 则执行代码1,若为 False ,则执行代码2。注意:上面三目运算符不是直接使用的,上面提供的是一种伪代码,真实使用时需要带入到具体的输出函数中。举个小例子,对于年龄进行判断,18岁以下就输出未成年,18岁及以上就输出已成年:

age = 17
print('已成年' if age >= 18 else '未成年')

总的来说,三目运算符就是将多行的单分支结构缩减到一行代码中,将代码的冗余大大降低。但是请注意,并不是所有的单分支结构都适合使用三目运算符,如果分支结构的代码太长(判断条件太长或分支内执行代码太长),就还是建议使用单分支来实现。

多分支结构

多分支结构比较简单,只是在 if else 的单分支语句上,增加了 elif 选择语句。之前的单分支是使用 if 后面的判别式进行判断,True 执行 if 后面的代码块, False 执行 else 后面的代码块。而多分支结构,就是在 if 判断为 False 之后,再按诈骗从上到下对剩余的 elif 后的代码块进行判断,只要判断出有某一个 elif 为 True ,则立即执行 elif 分支下面的代码块,如果 if 为 False 并且所有的 elif 都为 False,那么此时执行else

if 条件1:
    代码块1
elif 条件2:
    代码块2
elif 条件3:
    代码块3
……
else:
	代码N

给个基础的练习题,练习:

year = int(input())
if year % 4 == 0 and year % 100 != 0:
    print('闰年')
elif year % 400 == 0:
    print('闰年')
else:
    print('平年')

嵌套结构

嵌套结构是分支结构的一个变体,将多个分支结构嵌套在一起,使得代码块在分支结构中可以做更多的判断,使得最后经过分支结构的结果可以更加合理,分类更加精细。(PS:这个嵌套结构的解释我不满意,但是目前而言,我没有找到更加合适的解释,等我想到之后,会更新这个定义)

同样的,给个嵌套结构的例子:

判断一个数字是否是偶数,如果是偶数,再判断其是否是4的倍数:

num = 20
if num % 2 == 0:
    print(f'{num}是偶数')
    if num % 4 == 0:
        print(f'{num}还是4的倍数')
else:
    print(f'{num}是奇数')

在上面这段代码中,在最大的 if 判断之内有一个小的 if 进行了二次的判断,对于代码进行了又一次判断,这里需要注意一个点:if 语句中的 else 不是必写的项目,如果只需要 if 判断一次,且对于 if 判断为 False 的结果无要求的,就可以省略 else ,只写出 if 即可。

总结一下,嵌套是什么呢,就是在 if 判断过一次之后,在筛选出来的结果中想要进行二次筛选,这种情况下,就可以使用嵌套对于剩下的数据继续进行筛选。

(这里是我的个人想法:建议在写代码的时候,尽量少用嵌套,嵌套写出来会让你的代码冗余很高,代码很不好看,所以用 and or 这种逻辑运算式去处理应该算是最佳选择,给个例子,写出一种程序,判断给的年份是闰年还是平年:

# 第一种方法
# 用逻辑表达式来判断
year = 2022  # 这里为了流畅度我直接给一个值,就不给 input() 获取值了
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
    print('闰年')
else:
    print('平年')

上面我们可以看出来,代码冗余很低,用一个表达式解决了判断的需求,下面我们写一下嵌套:

# 第二种方法
# 用嵌套来判断
year = 2022
if year % 4 == 0:
    if year % 100 != 0:
        print('闰年')
    else:
        print('平年')
else:
	print('平年')

从代码上来看,上下两种方法的目的一致,且最后都达到了想要的目的,但是,同样的目的,前者几行就可以解决问题,后者较为繁琐,所以,为了学习的完整性,,嵌套结构要学习,但在实际的操作中,我觉得,能用逻辑表达式解决,肯定是最佳选择。)

循环结构

for - in循环

终于到了最为重要的循环的环节了,循环之于程序员可谓之水对于🐟,因为它可以处理好很多复杂的问题。闲话少叙,开始讲解。

"""
for-in循环语法:
for 变量 in 容器:
    代码块
容器中元素是固定好的,个数是有限的。
for循环会根据容器中元素个数确定循环次数,每循环一次,
变量就会从容器中挨个取得一个元素。直到循环次数达到容器中元素个数,停止。
"""

上面的代码浅显易懂,我不做过多描述,我从 容器 开始重点讲解,我们这里的容器,用的最多的一般是字符串吧,列表,以及 range() 方法,前两种用法在后面的学习中会接触到,这里不做讲解,重点讲后面的 range() 方法。

range()方法

range(start,stop,step)
start:开始参数,默认0,可以省略不写;stop:结束参数(必须赋值的一个参数);
step:为步长,决定下一个数字获取谁,默认为1,可以省略不写;
如果step出现,start就不能省略不写了。
如果step>=1,start必须小于stop;如果step<=1,start必须大于stop

简而言之就是,给 range() 一个开始的值(start),一个结束的值(finish),一个步长的值(step),他就可以给你满足你的条件的一堆值组成的一个容器。

需要注意的是, range() 里面的 strat ,finish所指向的那个区间是左闭右开的,比如range(1:3),这里是只能取到1,2,所以,在写到循环的时候,要去试一下具体这个循环要运行几次,防止出错。

while循环

while循环相对于 for-in 循环,没有固定的循环次数,有的只是跟在 while 后面的判断条件,满足就继续进入循环,不满足则离开循环。

while 判断式:
    # 如果上面的判断式满足,则进入循环执行下面的代码
    代码块
    # 运行完所有代码后,从头开始,重新验证判断式,如果成立,则继续进入循环
    # 直至判断式不能被满足,则循环结束

break 和 continue

break:只能用在循环中,一旦触发,直接结束当前所在循环。

continue:只能用在循环中,一旦触发,结束所在循环的本次循环,进入下一次循环。

当你想满足某个条件时,就结束循环,就可以使用 break ,但是当你想满足某个条件就跳出本次循环继续循环,就可以使用 continue 。

累死了,总算敲完这么一大堆,晚上有空我会继续敲,最近勤更,必须把之前的笔记全给补齐了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员好费脑子啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值