python流程控制

一、 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

 

应用场景:
验证用户名密码,重新输入这个功能需要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
第一种情况,前后条件为比较运算

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

print(1 or 2)
print(1 and 2)
print(5 or 2)
print(5 and 2)
print(0 or 2)
print(-1 or 2)

#结果:
#1
#2
#5
#2
#2
#-1
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


gbk utf-8 之间的转换?
且听很多回后的分解

 

posted @ 2018-12-09 17:55  从入门到出师  阅读(189)  评论(0编辑  收藏  举报