文章目录

  • Python的简介
  • 历史
  • 分类
  • 优点&缺点
  • python的基础
  • 变量
  • 常量
  • 注释
  • 基础数据类型
  • 逻辑语句
  • if判断
  • while循环
  • for循环
  • break 和 continue
  • 逻辑运算符
  • 前后都是比较运算
  • 前后都是数字
  • 用户交互(input)
  • 格式化输出
  • 三元运算



Python的简介

历史

  • 创始人, 龟叔, 89年圣诞期间创造python
  • 2020年python2x不再更新
  • 2004年出现Django

分类

  • 编译型: 将你的代码一次性全部编译成二进制, 然后再运行
  • 缺点: 编译时间长, 开发效率低, 不能跨平台
  • 优点: 执行效率高
  • 代表:
  • PyPy, 将python代码一次性全部转化成字节码, 然后转换成二进制, 交由操作系统执行
  • 解释型: 程序开始运行时, 逐行解释成二级制, 然后执行
  • 缺点: 执行效率低
  • 优点: 不需要编译, 开发效率高, 可以跨平台
  • 代表:
  • Cpython, 根据python规则将python代码转换成c的字节码, 然后转换成二进制, 交由操作系统执行
  • Jpython, 根据python规则将python代码转换成java的字节码, 然后转换成二进制, 交由操作系统执行
  • 其他语言python, 根据python规则将python代码转换成对应语言的字节码, 然后转换成二进制, 交由操作系统执行

优点&缺点

  • 优点:
  • 简单易懂, 优雅明确
  • 第三方库强大
  • 高级语言, 无需考虑如何使用底层
  • 可移植性, 可扩展性
  • 可嵌入性, 可将C/C++嵌入python(也可将python嵌入C)
  • 缺点:
  • 执行效率相对慢
  • 代码不能加密

python的基础

变量

"""
	将程序中运算的中间的结果暂存到内存中, 以便后续程序调用
	
	命名规则
		1.变量是由数字, 字母, 下划线任意组合
		2.不能是数字开头
		3.不能是python的关键字(如: if else while...)
		4.变量要具有可描述性
		5.变量不使用中文
		6.尽量不过长

"""

# 为"值"创建一块内存空间, 将"变量名a"指向它
a = 2
# 将"变量名b"指向"变量名a"对应的"值"的内存空间
b = a
# 将"变量名c"指向"变量名 b"对应的"值"的内存空间
b = a

# 所以三个地址是相同的
print(id(a), id(b), id(c))

# 为"值"创建一块内存空间, 将变量名 b 指向它
b = 3 

# 此时 a 和 c 指向同一块内存地址, 所以相同, b 指向另一内存地址, 所以不同
print(id(a), id(b), id(c))

常量

  • 一直不变的量, 如π, 约定俗成的将全部大写的变量认知为常量, 放在文件最上边
  • 例: BIRTH_OF_CHINA = 19491001

注释

# 单行注释 - 井号

'''
多行注释 - 三个单引号
'''

"""
多行注释 - 三个双引号
"""

基础数据类型

  • type() 用于查看数据类型

数据类型

示例

描述

常用场景

int

1,2,3

整数

数学计算

str

“1”, “a”, “-”

引号内的部分

标准输出

bool

True, False

真假

用于判断

list

[1, “2”, True]

用于存放各类单一元素(可变)

tuple

(1, “2”, True)

用于存放各类单一元素(不可变)

dic

{“Tom”: 99, “Andy”: 98}

用于存放成对的 kv 元素


逻辑语句

if判断

""" 
	逐条判断, 满足则直接执行, 不进行之后的判断
	可以嵌套

"""

if a > 60:
	print('及格')
elif a == 60:
	print('60')
else:
	print('不及格')

while循环

""" 
	如果while循环没有被break打断, 就会执行else后代码, 反之则不会执行
	当条件成立时, 重复执行

"""

c = 1

while c < 5:
    print(c)
    c += 1
else:
    print("while else")


""" 如何终止循环 """
# 1. 改变条件, 使条件不成立
# 具体代码同上

# 2. break 和 continue
# 下边会有介绍

# 3. 引用标志位, 结合 break 等关键字
tag = True
count = 1

while tag:
    print(count)
    count += 1
    if count == 101:
        tag = False
        break

for循环

  • for i in iterable
"""	如果没有使用 break 或 return 跳出循环, 则会在结束前执行 else 下的代码 """

l = [1, 2, 3, 4, 5]

for i in l:
    # 中间可以嵌套 if 判断
    if i == 'i':
        # break 跳出最近的 for 循环, continue 跳过本次循环
        break
    print(i)
else:
    print("finish")
  • for i in range(num)
""" else 的使用和上边那个示例一样 """

l = [1, 2, 3, 4, 5]

# 默认初始值为 0
for i in range(5):
	print(i)  # 0,1,2,3,4
	
# 可以设定初始值
for i in range(1, 5):
	print(i) # 1,2,3,4

# 可以设置步长
for i in range(1,5,2): # 左1 右5 步长2
	print(i) # 1,3
else:
    print("finish")
  • for k,v in dict.items()
""" 使用 dict.items()方法可以分别拿出字典的 k 和 v """

d = {"a":1, "b":2, "c":3}

for k, v in d.items():
    print(k, v)
    
#### 见到一个 github 上项目这么写的
for i in d.items():
    print(i[0], i[1])	# 这里 i[0] 就是 key, i[1] 就是 value

break 和 continue

# break 跳出当前循环
for i in range(5):
    if i == 3:
        break
    print(i) # 0 1 2

# continue 跳过当次循环
for i in range(5):
    if i == 3:
        continue
    print(i) # 0 1 2 4

逻辑运算符

前后都是比较运算

  • ( ) > not > and > or, 即同一优先级从左至右
# 例1:
print(2>1 and 3 < 4 or 4>5 and 2<1)

# 2>1 and 3<4 --> True
# 4>5 and 2<1 --> False
# True or False --> 结果为True

# 例2:
print(1>1 and 3<4 or 4>5 and 2>1 and 9>8 or 7<6)

# 1>1 and 3<4 --> False
# 4>5 and 2>1 and 9>8 --> False
# 7<6 --> False
# False or False or False --> False

前后都是数字

  • x or y, if x is True, return x, else return y
  • int --> bool, 非0为True, 0为False
  • 如果是and, 则和or相反
# 练习

print(3 or 2) # 结果为3
print(2 or 6) # 结果为2
print(0 or 6) # 结果为6

print(1 > 2 or 3 and 4 > 5)
# 1 > 2 --> False
# 4 > 5 --> False
# False or 3 and False --> False

用户交互(input)

"""	python3 中直接使用 input(), 得到的数据类型均为string	"""

username = input("username: ")
pwd = input("pwd: ")

print("用户名: %s, 密码: %s" % (username, pwd))

格式化输出

  • 以元组形式替换, 按顺序替换
name = input("请输入你的名字: ")
age = input("请输入您的年龄: ")
job = input("请输入您的工作: ")

msg1 = """
----------info of %s----------
Name    : %s
Age       : %d
Job        : %s
----------END----------
""" %(name, name, int(age), job)

print(msg1)
  • 以字典形式替换
dic = {"name": "xxx", "age": 45, "job": "IT"}

msg2 = """
----------info of %(name)s----------
Name    : %(name)s
Age       : %(age)d
Job        : %(job)s
----------END----------
""" % dic

print(msg2)

三元运算

a = 10
b = 20

# 如果 b>a, 返回 b, 反之返回 a
x = b if b>a else a

print(x) # 20