Python基础入门

1. 代码的编码&注释

1.1 编码

1)编码概述

计算机中所有的数据本质上都是以0和1的组合来存储的,编码类似于一个密码本,为文字和0/1的组合提供对应关系。

在文件保存时会根据编码的对应关系找到其对应的0/1写入到硬盘文件中,一般在文件保存时会让用户选择以某种编码保存。

计算机中有很多种编码方式,如gbk和utf-8,每种编码都有自己的一套对应关系,用不同的编码保存文件时,硬盘中存储的0/1组合也是不同的。

保存文件使用某种编码,打开文件就必须使用同样的编码,否则就会乱码。

2)ASCII码

ASCII码只能支持 符号、字母、数字。且用8位来表示一个字符。8位表示一个字节(1Byte=8bit)

ASCII码中的最开头都是0,是最初为了以后扩展而准备的。

ASCII码表中有256个对应关系(0到255)

  • 0表示NULL
  • ASCII码中的0~9指的是字符串"1"、"2"、... "9"与二进制的对应关系

3)unicode字符集

为了支持其他所有国家的文字,就弄出了万国码unicode

编码和字符集:

  • ASCII编码,直接是字符和二进制的对照表,此二进制可在计算机中用于内存计算、硬盘存储、网络传输
  • unicode字符集,是字符和码位的对应关系,码位本质上也是二进制,此二进制可在计算机中用于内存计算,但一般不会做硬盘存储网络传输
  • utf-8编码:是对unicode字符集的码位进行转换处理得到的二进制,此二级制可用于内存计算、硬盘存储、网络传输等

unicode字符集:

  • 现在unicode使用4个字节来表示所有字符,即ucs4
  • ucs4其实是对ucs2的一个扩展,ucs4默认使用4个字节表示码位,而ucs2用2个字节表示码位
  • ucs4会在ucs2表示的码位前加0,即:ucs2:01101011 01100110 变为 ucs4:00000000 00000000 01101011 01100110

ucs4的优缺点:

  • 缺点:因为都使用4个字节,同样的字符的码位会更占空间;所以在网络传输、硬盘存储时会把unicode字符集的码位转为(压缩)成utf-8等编码的二进制再进行传输和硬盘存储
  • 优点:可以表示所有字符并且长度固定4字节,方便内存中进行数据计算

4)utf-8编码

utf-8编码其实就是对unicode字符集的码位进行压缩加工处理得到的,把二进制码位中不必要的位去掉。

utf-8是为unicode编码设计的一种在存储和传输时节省空间的编码方案,使用1、2、3、4个字节表示所有字符,优先使用1个字符、无法满足则使增加一个字节,最多4个字节。

utf-8是一套以8位为一个编码单位的可变长编码,会将一个码位编码为1到4个字节。

1.2 指定编码&注释

1)Py中指定代码的编码

代码文件顶部指定编码方式:(必须在首行顶格写

# -*- coding:utf-8 -*-

写好代码后,以对应的编码规则保存(默认是以utf-8编码保存),然后Python解释器运行代码文件(使用utf-8编码去打开并运行代码)。

2)注释

  • 单行注释
# 单行注释,解释器忽略此行,不按照代码去解释此行代码
name = 'hgzero'
  • 多行注释
"""
注释多行,三引号括起来的内容解释器会忽略
"""
print("傻×")

2. 数据类型

2.1 int(整型)

整型表示数学中的整数,在Py中称为整型,支持 加、减、乘、除、取余、指数 等操作。

# 创建整型 666,并使用并使用print输出
print(666)
# 计算 2 加 10 的结果,并使用print输出
print(2+10)
# 计算 2 乘以 10 的结果,并使用print输出
print(2*10)
# 计算 10 除以 2 的结果,并使用print输出
print(10/2)
# 计算 10 除以 3 得的余数,并使用print输出
print(10%2)
# 计算 2 的 4 次方,并使用print输出
print(2**4)

2.2 str(字符型)

字符型就是表示字符串,如姓名、地址等。字符串必须用引号引起来

字符串支持字符串的  加、乘:

  • 加:字符串的拼接,要求字符串只能和字符串拼接
  • 乘:让此字符串重复出现多少次,要求必须是整型和字符串相乘
print("我是你爸")

# 字符串相加(字符串只能拼接字符串,不能拼接其他类型)
print("不好意思," + "我依然是你爸")   # 将这两段字符串拼接起来

# 字符串相乘
print("快叫爸爸" * 9)                # 将此字符串重复9次

2.3 bool(布尔型)

bool值表示某种判断所得到的 真、假。

bool值只能有两个值:True / False。

# 判断1是否大于2,如果是则为True,否则即为False,print输出True或者False
print(1>2)

# 判断整数89是否等于64,print输出True或者False
print(89 == 64)

# 判断字符串"2b"是否等于"傻狗",print输出True或者False
print("2b" == "傻狗")

2.4 类型转换

不同的数据类型都有不同的功能,但可以将其进行类型转换。

1)转换为整型

只有“数字”格式的字符串才能转换为整型。

# 将“数字”格式的字符串转换为整型
print( int("89") + int("64"))

# 将布尔值转换为整数类型
print(int(True))  # 输出 1
print(int(False)  # 输出 0

2)转换为字符串

# 将整型转换为字符串
print( str(666)+str(999) )

# 将布尔值转换为字符串
print( str(True) )    # 得到字符串True
print( str(False) )   # 得到字符串False

3)转换为布尔值

整型转换为布尔值时,只有0转换为False,其他均为True。

字符串转换为布尔值时,只有空字符为False,其他均为True。

3. 输出&输入&字符串格式化

3.1 输出

print用于将代码的结果输出到终端设备(标准输出)。

print在输出时默认会在结尾换行,因为默认定义了 end="\n"

  • 不换行,加入 end=""表示print结束时不再加 \n而换成空
# -*- coding: utf-8 -*-
print("俄爹虐你千百遍, ", end="")
print("你待俄爹如初恋, ", end="")
print("一句卧槽怎奈何. ", end="\n")  # 默认就是end="\n"

print("root", "passwd", "uid", "gid", sep=":")     # 以 :对前面的各个字符串片段进行拼接

3.2 输入

input用于实现用户交互。input输出的内容是字符串类型,即使输出了数字它也是字符型。

name = input("请输入用户名:")   # 这里的字符串为打印到屏幕上的内容,用户输出的结果会被赋值给name变量
print(name)                    # 打印name变量,是一个字符型

print("现在进行加法运算")
num1 = input("请输入第一个数字:")
num2 = input("请输入第二个数字:")
value = int(num1) + int(num2)
print(value)

3.3 字符串格式化

一般称字符串中的%s叫占位符,而占位符被替换的过程叫字符串格式化。

在字符串格式化时,如果想要输出%,则必须写两个%%才能正确输出%

1)常用的字符串格式化方法

# 最常用的字符串格式化
like = "my name is %s ,and my age is %d" % ("hgzerowzh", 21)
print(like)

print("welcome to %s" % "China")
print("the num is %.2f" % 9.1358567) # 百分号后面的.2f表示浮点数保留小数点后两位小数,并进行四舍五入


# 字典形式的字符串格式化
print("my name is %(name)s, and the age is %(age)d" % {"name": "hgzerowzh", "age": 21})  

2)两种format的字符串格式化

my_name = "my name is {name},and age is {age}"
print(my_name.format(name="hgzero", age=21))               # 有两种给format传值的方式
print(my_name.format(**{"name": "hg", "age": 23}))         # 可传入字典或列表,列表用*[] , 列表用**{}

print(my_name.format_map({"name": "wuzhihao", "age": 22})) # 这种字符串格式化需要传入字典的形式

4. 变量

4.1 变量和变量名

1)变量

变量就类似于别名和外号,可以通过变量名来操作其对应的值。

格式:【变量名 = 值】

name = "shit"
age = 70
test = 6 > 4
address = "ccp" + name

2)变量名

变量名的命名规则:

  • 只有由 字母、数字、下换下 组成
  • 不能由数字开头
  • 不能是Python的内置关键字

建议的命名方式:

# 下划线命名方式
your_father = "me"
my_son = "you"

# 驼峰式命名方式
yourFather = "hgzero"
mySon = "ccp"

4.2 内存指向

无人指向的数据会被标记为垃圾,由解释器自动化回收。

name = "hgzero"
# 创建一块区域保存字符串"hgzero",然后将name指向这块区域

new_name = name
# new_name会指向name所指向的那块内存区域

name = "hgzerowzh"
# 让name改为指向"hgzerowzh"的那块区域


num = 18
age = str(num)
# num会指向整数18的那块空间,age会另外再开辟一片空间来存放字符串

5. 条件语句

5.1 基本条件语句

if 和 else 下面的代码都需要相同的缩进(一般为4个空格)

username = "ccp"
password = "20204"
if username == "ccp" and password == "20204":
    print("恭喜你,登录成功")
else:
    print("登录失败")

5.2 多条件判断

1)格式

if 条件A:
    条件A成立则执行此处代码
elif 条件B:
    条件A不成立,条件B成立,则执行此处代码
elif 条件C:
    条件A/B都不成立,条件C成立,则执行此处代码
...
else:
    以上条件都不成立,则执行此处代码(如果没有功能,也可以把else省略)

2)示例

num = input("请输入数字")
data = int(num)
if data > 6:
    print("太大了")
elif data == 6:
    print("刚刚好")
else:
    print("太小了")

5.3 条件语句嵌套

if 条件A:
    if 条件B :
        写代码...
    else:
        写代码...
elif 条件C:
    写代码...
else:
    if 条件D:
        写代码...

6. 循环语句

6.1 while循环

1)基本格式

while 条件:
    ...
    ...
    可能有很多行码(这种在while缩进里面的代码统称循环体)

2)while ... else ... 语句

当while正常的结束,就会执行else中的代码;如果while语句被break强行退出,则不会执行else

# 这段代码中的else语句就不会被执行
count = 0
while count <= 5:
    print('loop', count)
    if count == 3:
        break
    count += 1
else:
    print('loop is done...')
print('out of loop')

3)示例

print("开始")
flag = True
while flag:
    print("朕,一统天下。")
    flag = False
print("结束")


print("开始")
num = 1
while num < 5:
    print("我一直是你爸")
    num = num + 1
print("结束")

6.2 break & continue 关键字

1)break

break只能出现在循环体中,用于终止循环。

循环体一旦遇到break,则立即终止循环,从break的位置直接跳出循环,去执行循环语句之后的代码。

print("开始")
i = 1
while True:
    print(i)
    i = i + 1
    if i == 101:
        break
print("结束")

2)continue

continue用于结束本次循环,开始下一次循环。

在循环体中遇到continue之后,本次循环不再执行continue下面的代码,直接回到while条件判断的位置,开始下一次循环。

print("开始")
i = 1
while True:
    if i == 7:
        i = i + 1
        continue
    print(i)
    i = i + 1
    if i == 101:
        break
print("结束")

7. 运算符

7.1 运算符的种类

1)算术运算符(如:加减乘除)

2)比较运算符(如:大于、小于)

3)赋值运算符(如:变量赋值)

4)成员运算符(如:是否包含)

5)逻辑运算符(如:且、非)

7.2 逻辑运算

1)规律

  • or:看第一个值,如果是“真”,则选择第一个值;否则选择第二个值
  • and:看第一个值,如果是“假”,则选择第一个值;否则选择第二个值
v1 = 4 and 8
v2 = 0 and 6
v3 = -1 and 88
v4 = "" and 7
v5 = "shit" and ""
v6 = "" and 0
v7 = 0 and "fuck"
print(v1,v2,v3,v4,v5,v6,v7)

结果:8 0 88    0

2)示例

遵循的优先级:先处理and再处理or

v1 = 1 and 6 or 8 and 0 or ""
# 结果:v1 = 6 # 流程分析: # 第一步:处理 1 and 6,得到 v1 = 6 or 8 and 0 or "" # 第二步:处理 8 and 0,得到 v1 = 6 or 0 or "" # 第三步:处理 6 or 0 ,得到 v1 = 6 or "" # 第四步:处理 6 or "",得到 6

7.3 运算符优先级

算术运算符 > 比较运算符 > 逻辑运算符(not > and > or)

 

posted @ 2020-07-28 20:22  Praywu  阅读(361)  评论(0编辑  收藏  举报