编程语言

编程语言就是一种让程序员和计算机可以相互沟通的语言

编程语言经历了:

  机械语言-汇编语言-高级语言

(技术发展的过程中,执行效率略微降低,编程语言的学习难度大幅降低)

编程语言可以分为:

  编译型 (C++) 和 解释型 (python)

编译型:

相当于整体翻译,执行速度快,翻译一次后可以重复使用结果

但如果翻译过程中发生错误,需要从头到尾重新翻译

解释型:

相当于一句一句翻译,如果过程中发现错误也不影响翻译速度

但执行速度不如编译型

单位换算(重要)
8bit = 1bytes # bit表示二进制位 bytes表示字节
1024bytes = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB

需要使用的软件

要使用python语言需要python解释器python编程软件

python解释器:python3.6

网上可以下载的python解释器已经更新到3.9版本了

但在it行业内,由于新版本可能不太稳定,所以一般都不用最新版

因此推荐使用兼容性最佳的3.6版本

可以用win+r打开,可以添加环境变量,也可以直接用编程软件打开

python编程软件:pycharm专业版

推荐使用pycharm,要下载专业版,社区版功能太少了

软件本身需要付钱,但可以百度到一万种方法破解,介绍一种:

第三周Python基础_数据类型

 

 第三周Python基础_变量名_02

 

 第三周Python基础_for循环_03

 

 第三周Python基础_数据类型_04

 

 第三周Python基础_字符串_05

pycharm基本操作

1.编程背景
  file
    settings
      appearance
        选择Theme即可(推荐使用黑色)
2.字体缩放
  file
    settings
      editor
        general
          勾选change font size ...

3.创建文件

第三周Python基础_变量名_06

 

 第三周Python基础_python_07

 

 4.运行文件

悬浮在文件内容区域 鼠标右键选择run 文件名称即可

python语法注释

单行文字注释:# 注释内容

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

# 和注释内容之间需要空一格,如果注释在代码后面,需要在前面也空两格

快捷方式
  code
    reformat code

第三周Python基础_python_08

变量

代码的语法结构:
  变量名 赋值符号 变量的值(真正的数据)

变量的值可以记录,可以运算
强调:变量推荐使用英文 不建议使用汉语拼音 更不要使用中文

变量名的命名

规范:

1.变量名只能由数字、字母、下划线组成
2.数字不能开头 下划线尽量也不要开头(有特殊含义)
3.变量名一定要做到"见名知意"
4.变量名不能与关键字(自带功能)冲突

风格:

1.下划线式 # python推荐使用下划线式
  user_name_from_db = 'jason'
2.驼峰体 # JavaScript推荐使用驼峰体
  大驼峰 # 所有单词首字母大写
    UserNameFromDb = 'jason'
  小驼峰 # 首字母不大写其他都大写
    userNameFromDb = 'jason'
"""无论使用哪种风格都没有关系 但是尽量不要混着用"""

常量

在python中没有真正意义上的常量 我们"墨守成规"的将全大写的变量名看成是常量
  HOST = '127.0.0.1'
  PORT = 3306
在其他编程语言中是存在真正意义上的常量 定义了就无法修改
  """JavaScript中"""
    const pi = 3.14
    pi = 666 # 报错

数据类型

1.整型int
  大白话:相当于生活中的整数
  作用:班级人数 年龄 年份

2.浮点型float
  大白话:相当于生活中的小数
  作用:身高 体重 薪资

3.字符串str
  大白话:相当于一段文字描述
  作用:主要用于描述性性质的内容

如何查看数据的数据类型
  type()

python所有基本数据类型

1.列表list
  list=['jason','kexin','tony']
(中括号,逗号隔开。元素可以是任何数据)
2.字典dict
  dict={
'name': 'jason',
'age': 18,
'hobby': 'read'
}
(大括号,每组的内部用冒号,组和组之间用逗号)
3.布尔值bool
  is_right = True
  is_delete = False
(表示对错,一般变量名用is开头)
4.元组tuple
  tuple = ('jason', 11, 22)
  # t[0] = 'jasonNB'  # 报错
(小括号,逗号隔开,元素可以是任何数据,不能修改内容)
5.集合set
  s = {1, 2, 3, 4, 5, 6, 7, 8}
(大括号,逗号隔开,元素一般只能是数字和字符串)
6.输入input
  username = input('请输入用户名>>>:')
(小括号,括号内为提示,用户输入的内容都会存为字符串)
7.输出print
  print(123)
  print(111,222,333,444)
(小括号,逗号隔开,打印括号内的内容)
8.占位符%s,%d
  res = 'my name is %s my age is %d'
  print(res%('jason',18))
(可以在固定内容中输入占位符,之后再填充不固定内容,补充内容的数量必须和占位符数量一致,%s什么都能占,%d只能给数字占位)
9.算术运算符**,//
  print(2 ** 3) # 8
  print(9 // 2)  # 4
(**表示次方,后面的数字表示几次方,//表示整除)
10.比较运算符><
  print(1 > 2) # False
  print('hello' > 'world')  # False
(可以比较大小,系统来判断对错)
11.增量赋值
  x = x + 1 等价于 x += 1
  x = x - 10  等价于 x -= 10
  x = x * 20  等价于 x *= 20
  x = x / 10  等价于 x /= 10
12.交叉赋值
  m = 10
  n = 20
  m, n = n, m
  print(m, n)
(互换两个对象的内容)
13.解压赋值
  stu_name = ['jason', 'kevin', 'tony']
  print(name1, name2, name3)
  l1 = [11,2,2,3,4,5,6,7,8,67,5,4,5,7,5,3,5,4]
  a,b,*_,d = l1
  print(a,b,d,_)
(可以一次显示多个内容,也可以筛选需要的内容)

python运算符

逻辑运算符:

与 and

链接的多个条件必须都满足结果才成立否则不成立

或 or

链接的多个条件有一个满足即可

非 not

对条件取反

成员运算符:

in/not in

判断某个个体(局部)在不在某个群体(整体)内

身份运算符:

判断两个内容是不是同一个东西,如果值相等,可能只是正好一样,内存地址相等,说明这两个就是一个东西

name1 == name2 # 判断两个变量的值是否相等
name1 is name2 # 判断两个变量绑定值的内存地址是否相等

流程控制(重点)

1.顺序结构(忽略)
从上往下依次执行(截止目前为止我们所写的代码都是顺序结构)

2.分支结构(重点)
根据条件的不同执行不同的流程

3.循环结构(重点)
根据条件循环往复的执行某一个过程

第三周Python基础_数据类型_09

 

 tab从属关系

在python中通过代码的缩进来表示代码的从属关系
如果上面的代码没有缩进下面的代码缩进了
那么表示下面的代码属于上面的代码 下面代码是否就要取决于上面的代码

在python中并不是所有的代码都可以拥有子代码
可以拥有子代码的
if

属于同一个关键字的多行子代码必须要保持相同的缩进量

ps:python中缩进一般推荐使用四个空格(tab键)

小技巧:当某一行代码的结尾出现了冒号 那么下一行代码必缩进

分支结构

语法结构
  if 条件1:
    条件1成立执行的代码
  elif 条件2:
    条件1不成立条件2成立执行的代码
  elif 条件3:
    条件1和2都不成立条件3成立执行的代码
  else:
    上述条件都不成立执行的代码

 分支结构可以嵌套别的分支结构和别的结构

循环结构

while True:
  # username = input('username>>>:')
  # password = input('password>>>:')
  # print(username, password)

语法结构:

先判断是否符合while之后的条件(true就代表永远符合)

如果符合就会进入循环,完成while之后的一串子代码

全部完成后将会自动回到while代码的第一步,如何符合条件就继续,直到不符合为止

特殊子代码:

continue # 直接跳到循环体的条件判断处重新判断条件
break # 结束本层循环

循环结构之for循环

基本结构:

for name in name_list:
"""
for循环能够实现的事情while循环都可以实现
但是for循环在很多时候语法更加简单快捷
"""
循环打印列表中每一个元素

for与字符
res = 'hello world!'
# 当值没有明确的类别时 变量名可以取i、j、k、item等
for i in res:
    '''for循环字符串会将字符串里面单个单个字符依次赋值给变量名i(将所有字符挨个输出)'''
    print(i)
for与字典
user_dict = {'username': 'jason', 'password': 123, 'hobby': 'read'}
for k in user_dict:
    """for循环字典只会取出字典的key value是无法直接获取的"""
    print(k)

range用法

for i in range(0, 101):  # 本质是一个迭代器(忽略) 你可以简单的看成是一个列表
    print(i)

for i in range(5):
    print(i)  # 一个参数 默认从0开始(顾头不顾尾)

for i in range(5,10):
    print(i)  # 两个参数 第一个是起始位包含在内 第二个是终止位不包含(顾头不顾尾)

for i in range(0,250,25):
    print(i)  # 三个参数 最后一个是数字间隔  类似于产生等差序列

如何查看数据类型拥有的方法

句点符
数据类型.
pycharm会自动列出该数据所有的方法

第三周Python基础_for循环_10

数据类型内置方法

整型int
int()
    1.数据类型转换
    2.其他进制字符串转换十进制数
n = '11'
print(int(n))  # 正确
n1 = '11.11'
print(int(n1))  # 报错 小数点整型无法转
n2 = 'jason'
print(int(n2))  # 报错 数字以外根本无法转换

# 将十进制转换成二进制
print(bin(100))  # 0b1100100
# 将十进制转换成八进制
print(oct(100))  # 0o144
# 将十进制转换成十六进制
print(hex(100))  # 0x64
"""
以后如果看到数字前面
    ob开头则是二进制数
    0o开头则是八进制数
    0x开头则是十六进制数
"""

# 其他机制转十进制
print(int('0b1100100', 2))
print(int('0o144', 8))
print(int('0x64', 16))
浮点型float
n1 = '11'
print(float(n1))  # 11.0
n2 = '11.11'
print(float(n2))  # 11.11
n3 = 'jason'
print(float(n3))  # 报错
字符串str
1.str可以将任意数据类型转换成字符串

res = 'hello world'
1.统计字符个数len
print(len(res))  # 11
2.索引取值[]
print(res[0])  # h
3.切片取值[]
print(res[1:5])  # ello  顾头不顾尾
4.步长(间隔)  2表示间隔一个取一个 不写默认是1没有间隔
print(res[1:8:2])  # el o
5.移除字符串首尾指定的字符strip
name = '$$jason$$'
print(name.strip('$'))  # jason
print(name.lstrip('$'))  # jason$$
print(name.rstrip('$'))  # $$jason
name1 = '  jason  '
print(len(name1))  # 9
print(len(name1.strip()))  # 5  括号内不写参数默认移除空格
username = input('username>>>:').strip()
if username == 'jason':
    print('登录成功')
else:
    print('登录失败')
6.按照指定的字符切割数据split
data = 'jason|123|teacher|read'
print(data.split('|'))  # ['jason', '123', 'teacher', 'read']
print(data.split('|', maxsplit=1))  # ['jason', '123|teacher|read']
print(data.rsplit('|', maxsplit=1))  # ['jason|123|teacher', 'read']
7.大小写转换upper/lower
res = 'Yu0My'
print(res.upper())  # 转大写  YU0MY
print(res.lower())  # 转小写  yu0my
"""图片验证码之所以不需要校验大小写 内部就是统一转大小写再比对"""
print(res.isupper())  # 字符串是否是纯大写
print(res.islower())  # 字符串是否是纯小写
8.判断字符串是否是纯数字isdigit
print('123'.isdigit())  # True
print('jason123'.isdigit())  # False
9.统计字符出现的次数count
res = 'my name is jason jason jason jason jason'
print(res.count('jason'))  # 5
10.替换指定的字符replace
res = 'my name is jason jason jason jason jason'
print(res.replace('jason', 'tony'))  # my name is tony tony tony tony tony
print(res.replace('jason', 'kevin', 2))  # my name is kevin kevin jason jason jason
11.按照指定的字符拼接字符串join
l = ['jason','123','read']
print('|'.join(l))  # jason|123|read
name1 = 'jason'
pwd1 = '123'
hobby1 = 'study'
print(name1 + '|' + pwd1 + '|' + hobby1)  # jason|123|study
列表list
只能够转支持for循环数据类型

l1 = [11, 22, 33, 44, 55, 66]
1.统计长度(元素的个数)len
print(len(l1)) # 6
2.索引取值[]
print(l1[0]) # 11
3.切片操作[]
print(l1[0:4]) # [11, 22, 33, 44] 顾头不顾尾
4.步长[]
print(l1[0:4:2]) # [11, 33] 顾头不顾尾
5.添加元素
5.1尾部追加元素append
l1.append('jason')
print(l1) # [11, 22, 33, 44, 55, 66, 'jason']
l1.append([111, 222, 333]) # 无论添加的元素是什么都只会当成列表的一个元素
print(l1) # [11, 22, 33, 44, 55, 66, 'jason', [111, 222, 333]]
5.2指定位置插入元素insert
l1.insert(0, 'jason')
print(l1) # ['jason', 11, 22, 33, 44, 55, 66]
l1.insert(2, [111, 222]) # 无论添加的元素是什么都只会当成列表的一个元素
print(l1) # ['jason', 11, [111, 222], 22, 33, 44, 55, 66]
5.3扩展列表extend
l1.extend([111, 222, 333, 444])
print(l1)
"""
如果不让你使用extend也完成扩展列表的操作 如何实现?
for i in [111,222,333,444]:
l1.append(i)
"""
6.删除元素
6.1通用的删除操作del
del l1[0]
print(l1) # [22, 33, 44, 55, 66]
6.2弹出元素pop
res = l1.pop(1)
print(l1, res) # [11, 33, 44, 55, 66] 22
6.3删除元素remove
res = l1.remove(22)
print(l1, res) # [11, 33, 44, 55, 66] None
7.统计元素出现的次数count
l2 = [11, 222, 33, 22, 33, 11, 11, 11, 22, 22, 33, 44, 44]
print(l2.count(11)) # 4
8.排序sort/sort(reverse=True)
l3 = [55, 44, 22, 33, 11, 99, 77, 88]
l3.sort() # 默认是升序
print(l3) # [11, 22, 33, 44, 55, 77, 88, 99]
l3.sort(reverse=True) # 倒序
print(l3) # [99, 88, 77, 55, 44, 33, 22, 11]
字典dict
字典内元素也是无序的
user_dict = {'username': 'jason', 'pwd': 123, 'hobby': 'read'}
1.统计长度(键值对的个数)len
print(len(user_dict)) # 3
2.按键取值get
print(user_dict['username']) # jason
print(user_dict['xxx']) # 键不存在会直接报错
print(user_dict.get('username')) # jason
print(user_dict.get('xxx')) # None 键不存在不会报错返回None
3.设置值(重点)[]
user_dict['username'] = 'jasonNB'
'''键存在则修改'''
print(user_dict) # {'username': 'jasonNB', 'pwd': 123, 'hobby': 'read'}
user_dict['age'] = 18
'''键不存在则新建'''
print(user_dict) # {'username': 'jasonNB', 'pwd': 123, 'hobby': 'read', 'age': 18}
4.删除值(字典的键值对是一个整体)pop
res = user_dict.pop('username')
print(user_dict, res) # {'pwd': 123, 'hobby': 'read'} jason
5.三个小方法keys/values/items
print(user_dict.keys()) # ['username', 'pwd', 'hobby']
print(user_dict.values()) # ['jason', 123, 'read']
print(user_dict.items()) # [('username', 'jason'), ('pwd', 123), ('hobby', 'read')]
集合(了解)
集合内元素是无序的
1.去重
集合内不允许出现重复的元素 会自动去重
2.关系运算
交叉并集
eg:共同好友 共同关注 共同点赞

f1 = {'jason', 'tony', 'kevin', 'jack'}
f2 = {'jason', 'tom', 'jerry', 'tony'}
# 1.求两个人共同好友&(ctrl+7)
print(f1 & f2) # {'tony', 'jason'}
# 2.求f1独有的好友-
print(f1 - f2) # {'jack', 'kevin'}
# 3.求f2独有的好友-
print(f2 - f1) # {'tom', 'jerry'}
# 4.求两个人所有的好友|
print(f1 | f2) # {'jason', 'jerry', 'tony', 'jack', 'tom', 'kevin'}
# 5.求两个人各自的好友^(ctrl+6)
print(f1 ^ f2) # {'kevin', 'jack', 'tom', 'jerry'}
# 6.父集 子集><
print(f1 > f2)
print(f1 < f2)