python课程学习-模块1-总结02

1. python的流程控制和循环

1.1 if…else

条件判断

单分支

if 满足条件:
    执行这段代码

例:

>>> if ('t' in 'test'):
...     print('t in test')
... 
t in test

双分支

if 满足条件:
    执行这段代码
else:
    不满足就执行这一行

例:

>>> if ('t' in 'hello'):
...     print('t in hello')
... else:
...     print('t not in hello')
... 
t not in hello

多分支

if 满足条件1:
    执行代码1
elif 满足条件2:
    执行代码2
elif 满足条件3:
    执行代码3
...

else:
    不满足上面的条件就执行这一行

例:

age = 24
guess_age = int(input("Input your guess of Anna's age: "))
if guess_age == age:
    print("Well done. You guessed right.")
elif guess_age > age:
    print("too bigger")
elif guess_age < age:
    print("too little")
else:
    print("Wrong input!")

输出如下:

Input your guess of Anna's age: 25
too bigger

1.2 while

条件判断

while 条件为真:
    执行这部分代码

例1:

num = 0
while num < 4:
    print("num is %d" % num)
    num += 1

输出:

num is 0
num is 1
num is 2
num is 3

例2:

num = 0
while num < 4:
    age = 24
    guess_age = int(input("Input your guess of Anna's age: "))
    if guess_age == age:
        print("Well done. You guessed right.")
    elif guess_age > age:
        print("too bigger")
    elif guess_age < age:
        print("too little")
    else:
        print("Wrong input!")
    num += 1

输出如下:

Input your guess of Anna's age: 25
too bigger
Input your guess of Anna's age: 24
Well done. You guessed right.
Input your guess of Anna's age: 26
too bigger
Input your guess of Anna's age: 12
too little

可以看到上面才了两次,已经猜中了,可是还需要再猜,明显是不合理的,那么现在要求猜中后跳出循环,这就需要使用break。
break
例3:

num = 0
while num < 4:
    age = 24
    guess_age = int(input("Input your guess of Anna's age: "))
    if guess_age == age:
        print("Well done. You guessed right.")
        break #使用break
    elif guess_age > age:
        print("too bigger")
    elif guess_age < age:
        print("too little")
    else:
        print("Wrong input!")
    num += 1

输出如下:

Input your guess of Anna's age: 23
too little
Input your guess of Anna's age: 24
Well done. You guessed right.

while...else...
while后面的else作用是指,当while循环正常执行完,中间没有被break中止的话,就会执行else语句

count = 0
while count <= 4:
    count += 1
    print("Loop", count)
else:
    print("循环执行完了")
print("跳出while循环语句")

输出如下:

Loop 1
Loop 2
Loop 3
Loop 4
Loop 5
循环执行完了
跳出while循环语句

continue
例:

count = 0
while count <= 4:
    count += 1
    if count == 3:
        continue
    print("Loop", count)
else:
    print("循环执行完了")
print("跳出while循环语句")

输出如下:

Loop 1
Loop 2
Loop 4
Loop 5
循环执行完了
跳出while循环语句

可以看到,如果当count为3时,使用了continue,这样下面的print语句就不执行了
死循环

while True:
    print("dead loop")

2. for循环

循环

>>> name_list = ['Alex', 'ZhangSan', 'LiSi', 'WangWu']
>>> for name in name_list:
...     print("name", name)
... 
name Alex
name ZhangSan
name LiSi
name WangWu

例2:

>>> [x for x in range(5)]
[0, 1, 2, 3, 4]
>>> {x:x*x for x in range(5)}
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

2. python中的字符编码

2.1 ASCII编码

python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)。

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。

2.2 Unicode与UTF-8

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode。

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存…

所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)。

python 2.x默认编码是ASCII
python 3.x默认编码是UTF-8

3. 进制转换

二进制,八进制,十进制,十六进制数相互转换
十进制转换

# 十进制转8进制
>>> oct(10)
'0o12'
>>> oct(1)
'0o1'
>>> oct(7)
'0o7'
>>> oct(8)
'0o10'
# 十进制转16进制
>>> hex(1)
'0x1'
>>> hex(10)
'0xa'
>>> hex(9)
'0x9'
>>> hex(15)
'0xf'
>>> hex(16)
'0x10'
>>> hex(32)
'0x20'

十六进制

In [4]: a = '中文'

In [5]: a
Out[5]: '\xe4\xb8\xad\xe6\x96\x87'

为什么要用到16进制?
方便阅读,缩减字节数
转换:

>>> hex(32)  # 10->16
'0x20'
>>> bin(0x20) # 16-> 2
'0b100000'
>>> bin(10)   # 2->10
'0b1010'
>>> oct(0x20) # 16->8
'0o40'

这里写图片描述
这里写图片描述

4. 其它

4.1 hash

hash,一般翻译做散列,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的来说,就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

特征:

hash值得计算过程是依据这个值得一些特征计算的,这就要求hash的值必须固定,因此被hash的值必须是不可变的。

用途:

  1. 文件签名
  2. md5加密
  3. 密码验证
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值