python基础2
一、 while循环
while 无限循环
while 循环的结构:
while 条件:
循环体
如何终止循环?
1,改变条件 (标志位flag的概念)
2, break 终止循环。
flag = True while flag: print('我的滑板鞋') print('忐忑') flag = False print('茉莉花') print('老司机带带我')
例如: 打印出 1 ---100
方法1:

flag = True count = 1 while flag: print(count) count = count + 1 if count == 101: flag = False
方法2:

count = 1 while count < 101: print(count) count = count + 1
break 循环中只要遇到break 立马结束循环。

while True: print(111) print(222) break print(333) print(444) print(123) # 111 222 123
利用break,while, 计算 1 + 2 + 3 ....100 的结果

count = 1 sum = 0 while True: sum = sum + count count = count + 1 if count == 101: break print(sum) #5050
continue: 结束本次循环,继续下一次循环。

while True: # 无线循环输出111 222 print(111) print(222) continue print(333)
while else 结构
如果while循环被break打断,则不执行else代码。若没有被break打断则执行else代码。

count = 1 while count < 5: print(count) count = count + 1 if count == 3: break else: print(666) print(222) # 1 2 222
for else结构(跟while else一样)
如果for循环正常执行完毕,则执行else代码,否则不执行

for i in range(3): print(i) else: print(999)
应用场景:
验证用户名密码,重新输入这个功能需要while循环。
无限次的显示页面,无限次的输入......
二、 格式化输出
制作一个模板,某些位置的参数是动态的,像这样,就需要用格式化输出。
字符串的动态替换
% 占位符 ,s 数据类型为字符串, d为数字类型
name = input('请输入姓名:') age = int(input('请输入年龄:')) sex = input('请输入性别:') 第一种方式: msg = '你的名字是%s,你的年龄%d,你的性别%s' % (name, age, sex) print(msg) 第二种方式 msg = '你的名字是%(name1)s,你的年龄%(age1)d,你的性别%(sex1)s' % {'name1': name,'age1': age,'sex1': sex} print(msg) bug 点 在格式化输出中,只想单纯的表示一个%时,应该用%% 表示 msg = '我叫%s,今年%d,我的学习进度1%%' % ('小关', 28) print(msg)
三、 运算符
== 比较的两边的值是否相等
= 赋值运算
!= 不等于
+= 举例: count = count + 1 简写 count += 1
-=
*= : count = count * 5 简写 count *= 5
/=
**=
//=
逻辑运算符:and or not
优先级:()> not > and > or
第一种情况,前后条件为比较运算,结果为 True 或者 False

print(1 < 2 or 3 > 1) print(1 < 2 and 3 > 4) print(1 < 2 and 3 > 4 or 8 < 6 and 9 > 5 or 7 > 2) print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8) print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) #结果: #True #False #True #False #False
第二种情况,前后两边的条件为数值,结果为数值
x or y , x为真,值就是x,x为假,值是y
x and y, x为真,值是y,x为假,值是x

""" 这种题目的思路是:找到那个能够一锤定音的值,那么就是结果. 但是注意了,这里的一锤定音的值并不是一定为真,也可能为假 """ # 首先看运算符是or,只有一个值为真即可,那么1为真,已经可以确定 1 or 任何值都为真(一锤定音),那么结果就是 1 print(1 or 2) # 运算符为and,1为真,但是如果and后面的值为真,整个式子才为真,后面值为假,整个式子就是假,这里能一锤定音的是and后的值,那么结果为2 print(1 and 2) # or运算符,-1为真,无论后面值为什么,都能够直接确定整个式子的值为真,能一锤定音,结果是 -1 # 注意了:数字的布尔值,除了0以外,其他数字都为True print(-1 or 2) # or运算,0为假,如果or后面的值为真,则式子为真,后面的值为假,则式子为假,后面的值能一锤定音,那么结果为2 print(0 or 2) print(5 or 2) print(5 and 2) # 首先看and运算,2为真,后面的值为真则真,为假则假,能够一锤定音,那么 2 and 0的结果为 0 # 那么式子简化为 0 or 4, 0为假,后面的值为真则真,为假则假,能够一锤定音,那么结果是 4 print(2 and 0 or 4) # 结果: # 1 # 2 # -1 # 2 # 5 # 2 # 4
补充
int --- > bool
0 对应的bool值为False,非0(包括负数)都是True.
bool --- > int
True对应的数值是1 ,False对应的数值是0
print(bool(100))
print(bool(-1))
print(bool(0))
print(int(True))
print(int(False))
结果:
True
True
False
1
0
print(0 or 3 and 5 or 4) --> 5
四、 编码初识
(以下ASCII等编码代表的字符我乱写的,只是用于解释,想看真正的编码代表的意思可自行百度)
以前战争时期要发一些信息的时候,一般就用电报,“滴滴滴”这样发过去,那对方是怎么知道这些“滴滴滴”是什么意思呢?
数据的传输最终都是转换成高低电平的形式,高低电平就用1和0表示。
比如一个叫小明的人要发一段信息给一个叫沙比的人,内容如下:
小明: 今晚吃鸡!
今:0101
晚:010
吃:010001
鸡:01111
按照这样发过去的信息为:010101001000101111
沙比看到肯定一脸懵逼,表示看不懂,所以为了能让沙比看懂,就要制定一系列的规则,主要是:
1、断位:规定多少个数字断一次位
2、密码本:记录明文与二进制的对应关系。
规范之后,小明发给沙比的信息就应该改变一下:
今:0101 0001
晚:0101 1101
吃:0101 0001
鸡:0111 1100
那沙比收到就是01010001 01011101 01010001 01111100 他会按照之前规定的多少个数字断位一次,每个数字的组合代表什么意思就从密码本上
查看,那样就可以实现通信了。
所以在计算机界就出现了几个版本的密码本:
ASCII: 最初版本的密码本:包含所有的英文字母,数字,特殊字符。
最初:
一个字符 000 0001 用7位二进制表示
后来优化-->预留一位以便以后的扩展,因此使用8位二进制,而英文用不了那么多位二进制,所以最开始的一位都是0(一位二进制可以
表示两种(0或者1),8位二进制可以表示2**8个字符)
A: 01000001 8位 == 1个字节
a: 01100001
c: 01100011
对于ASCII码来说:
'hello laddy' 一个字节代表一个字符,这里共11个字符,11个字节。
unicode:万国码,创建的目的是将所有国家的语言文字都写入这个密码本。
起初:1个字符用16位二进制即2个字节表示。但是发现并不够涵盖所有国家的语言。
A: 01000001 01000001
b: 01000001 01100001
中:01000001 01100101
改版:1个字符 32位 4个字节表示。但是浪费资源,占空间。
A: 01000001 01000001 01000001 01000001
b: 01000001 01100001 01000001 01000001
中:01000001 01100101 01000001 01000001
Unicode升级后--->utf-8: 最少用8位表示一个字符。
英文字母A: 01000001 用8位 一个字节表示
欧洲文字: 01000001 01100001 用16位 两个字节表示
中文: 01000001 01100101 01000001 用24位 三个字节表示
'abc小姐姐':12个字节
gbk:国标,只包含中文、英文(英文字母,数字,特殊字符)
英文A:01000001 用8位 一个字节表示
中文:01000001 01100101 用16位 两个字节表示
这几种编码中,英文字母对应的意思都是统一按照ASCII的对应关系,而其他字符没有任何关系
所有编码都与unicode有关
8 bit == 1Bytes 位(bit)音译为“比特”,表示二进制位
1024Bytes == 1KB 字节(Byte)音译为“拜特”,习惯上用大写的“B”表示。
1024KB == 1MB 1个字节等于8个比特(1Byte=8bit),也就是一个字节由八个二进制位构成
1024MB == 1GB
1024GB == 1TB
1024TB == 1PB
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix