《python学习》(二) python入门
in 学习记录 with 41 comments

《python学习》(二) python入门

in 学习记录 with 41 comments

1.字符编码

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

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

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

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

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

python2.x版本,默认支持的字符编码为ASCll python3.x版本,默认支持的是Unicode,不用声明字符编码可以直接显示中文

2.注释

单行注视:# 被注释内容

多行注释:""" 被注释内容 """

注释快捷键:选中被注释的内容,ctrl+?注释选中的内容,再次ctrl+?取消注释

3.关键字

python一些具有特殊功能的标示符,这就是所谓的关键字

关键字,是python已经使用的了,所以不允许开发者自己定义和关键字相同的名字的标示符

      and     as      assert     break     class      continue    def     del
      elif    else    except     exec      finally    for         from    global
      if      in      import     is        lambda     not         or      pass
      print   raise   return     try       while      with        yield

可以通过下面的方式查看关键字

import keyword
print(keyword.kwlist)

4.格式化输出

age = 22
print('我今年%d岁'%age)
输出结果:我今年22岁

常用的格式化输出符号
2024-02-26T06:25:56.png

5.变量

变量定义的规则:

  变量名只能是 字母、数字或下划线的任意组合

  变量名的第一个字符不能是数字

  关键字不能声明为变量名

6.运算符

2024-02-26T06:27:03.png
2024-02-26T06:27:20.png

7.常用数据类型转换

2024-02-26T06:27:25.png

8.运算符

2024-02-26T06:27:34.png
2024-02-26T06:30:25.png

9.判断语句

1.if-else

 if 条件:
        满足条件时要做的事情1
        满足条件时要做的事情2
        满足条件时要做的事情3
        ...(省略)...
    else:
        不满足条件时要做的事情1
        不满足条件时要做的事情2
        不满足条件时要做的事情3
        ...(省略)...

实例:

name = input('请输入用户名字:')
password = input('请输入密码:')

if name == 'root' and password == '123':
    print('root login success')
else:
    print('用户名或密码错误')

2.elif

if xxx1:
    事情1
elif xxx2:
    事情2
elif xxx3:
    事情3

当xxx1满足时,执行事情1,然后整个if结束
当xxx1不满足时,那么判断xxx2,如果xxx2满足,则执行事情2,然后整个if结束
当xxx1不满足时,xxx2也不满足,如果xxx3满足,则执行事情3,然后整个if结束
实例:

    score = 77

    if score>=90 and score<=100:
        print('本次考试,等级为A')
    elif score>=80 and score<90:
        print('本次考试,等级为B')
    elif score>=70 and score<80:
        print('本次考试,等级为C')
    elif score>=60 and score<70:
        print('本次考试,等级为D')
    elif score>=0 and score<60:
        print('本次考试,等级为E')

3.if嵌套

if 条件1:
     满足条件1 做的事情1
     满足条件1 做的事情2
     ...(省略)...

     if 条件2:
         满足条件2 做的事情1
         满足条件2 做的事情2
         ...(省略)...

10.循环语句

1.while循环

while 条件:

    条件满足时,做的事情1
    条件满足时,做的事情2
    条件满足时,做的事情3
    ...(省略)...

实例:求1到100的总和

i = 1
sum = 0

while i <= 100:
    sum = sum + i
    i += 1

print("总和为%d"%sum)    #总和为5050

2.while循环嵌套

  while 条件1:

        条件1满足时,做的事情1
        条件1满足时,做的事情2
        条件1满足时,做的事情3
        ...(省略)...

        while 条件2:
            条件2满足时,做的事情1
            条件2满足时,做的事情2
            条件2满足时,做的事情3
            ...(省略)...

实例: 九九乘法表

 i = 1
    while i<=9:
        j=1
        while j<=i:
            print("%d*%d=%-2d "%(j,i,i*j),end='')
            j+=1
        print('\n')
        i+=1

结果:

1*1=1  

1*2=2  2*2=4  

1*3=3  2*3=6  3*3=9  

1*4=4  2*4=8  3*4=12 4*4=16 

1*5=5  2*5=10 3*5=15 4*5=20 5*5=25 

1*6=6  2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 

1*7=7  2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 

1*8=8  2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 

1*9=9  2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 

3.for循环

在Python中 for循环可以遍历任何序列的项目,如一个列表或者一个字符串等。

for 临时变量 in 列表或者字符串等:

 循环满足条件时执行的代码

else:

 循环不满足条件时执行的代码

实例:

name = 'derek'
for i in name:
    print(i)

结果:

d
e
r
e
k

4.break和continue

break的作用:用来结束整个循环
continue的作用:用来结束本次循环,紧接着执行下一次的循环
(1)实例:break的用法

i = 0
while i < 10:
    i += 1
    if i == 5:
        break
    print(i)

结果:

1
2
3
4

(2)实例:continue的用法

i = 0
while i < 10:
    i += 1
    if i == 5:
        continue
    print(i)

结果:

1
2
3
4
6
7
8
9
10

深浅拷贝

要理解深浅拷贝,需先弄懂下面的概念

变量-引用-对象(可变对象,不可变对象)-切片-拷贝(浅拷贝,深拷贝)

变量是一个系统表的元素,拥有指向对象的连接的空间

对象是被分配的一块内存,存储其所代表的值

引用是自动形成的从变量到对象的指针

在Python中不可变对象指:一旦创建就不可修改的对象,包括字符串,元祖,数字

在Python中可变对象是指:可以修改的对象,包括:列表、字典

1.不可变对象的赋值

a的值发生改变,b不会跟着改变

a = 1
b = a
print(a)
print(b)
a  = 3
print(a)
print(b)

结果:

1
1
3
1

2.可变对象的赋值

a的值发生改变,b也跟着改变

a = [1,2]
b = a
print(a)
print(b)
a[0] = 3
print(a)
print(b)

结果:

[1, 2]
[1, 2]
[3, 2]
[3, 2]

要想b的值不会改变,就要用到copy模块了

3.深浅拷贝

浅拷贝:只拷贝顶级的对象,或者说:父级对象

深拷贝:拷贝所有对象,顶级对象及其嵌套对象。或者说:父级对象及其子对象

import copy

#第一种:如果字典只有顶级对象(没有带嵌套)
d = {'name':'derek','age':'22'}
c1 = copy.copy(d)       #浅拷贝
c2 = copy.deepcopy(d)   #深拷贝

print(id(d),id(c1),id(c2))   #5794912 5794984 31939824   三个不同对象

d['age'] = 25
print(d,c1,c2)
#{'name': 'derek', 'age': 25}
# {'name': 'derek', 'age': '22'}
# {'name': 'derek', 'age': '22'}

源对象修改值的时候,深浅拷贝的对象值没有改变
import copy

#第二种,字典中有嵌套
d = {'name':{'first':'zhang','last':'derek'},
    'job':['IT','HR']}
c1 = copy.copy(d)
c2 = copy.deepcopy(d)
print(id(d),id(c1),id(c2))    #31157416 31940256 35946856

d['job'][0] = 'tester'
print(d,c1,c2)
# {'name': {'first': 'zhang', 'last': 'derek'}, 'job': ['tester', 'HR']}
# {'name': {'first': 'zhang', 'last': 'derek'}, 'job': ['tester', 'HR']}
# {'name': {'first': 'zhang', 'last': 'derek'}, 'job': ['IT', 'HR']}

源对象修改值的时候,浅拷贝的值跟着改变,深拷贝的值没变

Responses / Cancel Reply
  1. 1

    1

    Reply
    1. 1
      @1

      1

      Reply
    2. 1
      @1

      1

      Reply
    3. 1
      @1

      1

      Reply
    4. 1
      @1

      1

      Reply
    5. 1
      @1

      1

      Reply
    6. 1
      @1

      1

      Reply
    7. 1
      @1

      1

      Reply
    8. lxbfYeaa
      @1

      1

      Reply
    9. lxbfYeaa
      @1

      1

      Reply
    10. lxbfYeaa
      @1

      1

      Reply
    11. lxbfYeaa
      @1

      555

      Reply
  2. 1

    1

    Reply
    1. 1
      @1

      1

      Reply
    2. 1
      @1

      1

      Reply
    3. 1
      @1

      1

      Reply
    4. 1
      @1

      1

      Reply
    5. lxbfYeaa
      @1

      1

      Reply
    6. lxbfYeaa
      @1

      1

      Reply
    7. lxbfYeaa
      @1

      1

      Reply
  3. 1

    555

    Reply
    1. 1
      @1

      1

      Reply
    2. 1
      @1

      1

      Reply
    3. 1
      @1

      1

      Reply
    4. 1
      @1

      1

      Reply
    5. 1
      @1

      1

      Reply
    6. 1
      @1

      1

      Reply
    7. 1
      @1

      1

      Reply
    8. 1
      @1

      1

      Reply
    9. 1
      @1

      1

      Reply
    10. 1
      @1

      1

      Reply
    11. 1
      @1

      1

      Reply
    12. 1
      @1

      1

      Reply
    13. lxbfYeaa
      @1

      1

      Reply
    14. lxbfYeaa
      @1

      1

      Reply
    15. lxbfYeaa
      @1

      1

      Reply
    16. lxbfYeaa
      @1

      1

      Reply
    17. lxbfYeaa
      @1

      1

      Reply
  4. 怎么收藏这篇文章?

    Reply
  5. 看的我热血沸腾啊https://www.237fa.com/

    Reply
  6. 想想你的文章写的特别好https://www.ea55.com/

    Reply