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
View Code
复制代码

 

方法2:

复制代码
count = 1
while count < 101:
     print(count)
     count = count + 1
View Code
复制代码

 

break 循环中只要遇到break 立马结束循环。

复制代码
while True:
    print(111)
    print(222)
    break
    print(333)
    print(444)
print(123)    #  111 222 123
View Code
复制代码

 

利用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
View Code
复制代码

 

continue: 结束本次循环,继续下一次循环。

复制代码
 while True:              # 无线循环输出111 222
     print(111)
     print(222)
     continue
     print(333)
View Code
复制代码

 

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
View Code
复制代码

 

for else结构(跟while else一样)

如果for循环正常执行完毕,则执行else代码,否则不执行

复制代码
for i in range(3):
    print(i)
else:
    print(999)
View Code
复制代码

 

应用场景:
验证用户名密码,重新输入这个功能需要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
View Code
复制代码

 

第二种情况,前后两边的条件为数值,结果为数值

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
View Code
复制代码

 

补充
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

 

posted @   我用python写Bug  阅读(207)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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
点击右上角即可分享
微信分享提示