@

目录

前言

人生苦短,我用Python

 

Python基础(二): https://blog.csdn.net/weixin_46818279/article/details/108855481

1. Python环境的搭建

解释器和开发集成环境pycharm的安装还是比较简单的。

1.1 python解释器的安装

(1) 到官网下载python解释器

下载地址:https://www.python.org/downloads/release/python-372/



注释: 这个解释器是3.7.2版本的

 

 

(2) 开始安装python解释器

安装解释器非常简单,一定要把把下面的环境变量打上对勾, 然后在上面选择Install Now。 这里我选择Install Now,默认安装在C盘。如下如所示



 

(3) 检验python解释器是否安装成功

在dos命令行下,输入python,如果出现版本号,则安装成功。

1.2 pycharm的安装

工欲善其事,必先利其器。Pycharm是一种Python IDE(集成开发环境),带有一整套可以帮助用户在使用Python语言时 提高其效率的工具。 简单的说提高你写代码的速度,编写代码更爽更舒服。

(1) 官网下载Pycharm

下载地址:http://www.jetbrains.com/pycharm/download/#section=windows

小提示: Pythoncharm分为专业版(professional)和社区版(community)。专业版集成了一些框架和库,收费的,基础里用不到,社区版就够用了。

 

 

(2) 开始安装pycharm

安装pycharm也非常简单,选好安装路径,我安装到D盘了。然后到达了如下图的界面,选择一个64位的桌面图标(shortcut),再选择一个.py的联想,如下图所示。



(3) 在pycharm里新建一个项目

第一次在pycharm中新建项目的时候,你点New Project会到达如下图的界面。需要添加解释器,就是添加你安装解释器的路径,如下图所示:



 

小提示: python解释器添加完,项目创建好了之后,就可以愉快的写代码了。pycharm里面的快捷键,还有字体的修改,解释器的修改等等,可以百度自行搜索。

2. Python基础语法

2.1 基本语法

直接上代码,一看就懂了

  1. # 这是一个输出语句
  2. print("Hello,World")
  3. """
  4. 这是一个多行注释
  5. """
  6. '''
  7. 这也是一个多行注释
  8. '''
  9. ====================================================================================
  10. # 定义变量,储存数据TOM
  11. my_name = 'TOM'
  12. print(my_name)
  13. # 定义变量,储存数据,这是一瓶冰红茶
  14. icdTea = '这是一瓶冰红茶'
  15. print(icdTea)

2.2 数据类型

来一个思维导图,简单明了



直接上代码,一看就懂了

  1. # 整型和浮点型
  2. num1 = 1
  3. num2 = 1.2
  4. print(type(num1))
  5. print(type(num2))
  6. # 这是一个字符串类型
  7. a = 'hello,world!'
  8. print(type(a))
  9. # 这是一个布尔类型
  10. b = True
  11. print(type(b))
  12. # 这是一个列表类型
  13. c = [10,20,30]
  14. print(type(c))
  15. # 这是一个元组类型
  16. d = (10,20,30)
  17. print(type(d))
  18. # 这是一个集合
  19. e = {10,20,30}
  20. print(type(e))
  21. # 这是一个字典
  22. f = {'name': 'TOM','age': 18}
  23. print(type(f))

小提示:还有个复数类型,就是用于表示数学中的复数,用 real + imagej表示

2.3 标识符与关键字

这里不多说,跟C语言和Java中的知识都差不多一样,提几个需要注意的地方。

标识符:

(1)由数字、字母、下划线组成

(2)不能数字开头

(3)不能使用内置关键字

(4)严格区分大小写

2.4 格式化输出

直接上代码,一看就懂

  1. age = 18
  2. name = 'TOM'
  3. weight = 75.5
  4. stu_id = 1
  5. print('今年我的年龄是%d' % age)
  6. print('我的名字叫%s' % name)
  7. print('我的体重是%.3f' % weight)
  8. print('我的体重是%03d' % stu_id) # 不够三位,用0补全
  9. print('我的名字叫:%s ,我的年龄是:%d' % (name,age))
  10. print("我的名字叫:%s,我的年龄是:%d" % (name,age+1)) # 年龄加一岁
  11. print("我的名字叫:%s,今年的年龄是:%d,我的体重是:%s,我的学号是:%03d" % (name,age,weight,stu_id))
  12. ===========================================================================================
  13. name = "TOM"
  14. age = 18
  15. weight = 75.5
  16. # %s比较强大
  17. print('我的名字叫:%s,我的年龄是:%s,我的体重是:%s' % (name,age,weight))
  18. ===========================================================================================
  19. name = 'TOM'
  20. age = 16
  21. # 语法:f'{表达式}'
  22. # 这样的输出格式更加高效和简洁
  23. print(f'我的名字叫{name},我的年龄为{age}')

小提示:

(1)务必掌握这种输出格式f'{表达式}' ,这种的输出格式更加高效简洁。f-格式化字符串是Python3.6中新增的格式化方法,这种方法更简单易读。

(2)常见的格式符号:%s (字符串) %d(有符号的十进制整数) %f(浮点数) %c(字符) 这几种是常见的格式符号,如果需要其他的再去查就好了。

2.5 转义字符和print的结束符

直接上代码,一看就懂

  1. print('hello world')
  2. print('hello\nworld') # hello world直接换行输出
  3. print('\thello') # 前面输出空格再输出hello
  4. =================================================================
  5. # 在python中,print()默认自带end='\n'这个换行结束符,用户可以按照需求更改结束符
  6. print('hello', end='\n')
  7. print('world')
  8. print('hello', end='\t')
  9. print('hello')
  10. print('hello', end='...')
  11. print('world')

小提示:要记住print的结束符这个小知识点。

2.6 输入与数据类型转换

直接上代码,一看就懂

  1. passward = input('请输入您的密码:')
  2. print(f'您输入的密码是:{passward}')
  3. # input接收到的数据类型都是字符串
  4. print(type(passward))
  5. ====================================================================================
  6. num = input("请输入一个数字:")
  7. print(num)
  8. print(type(num))
  9. # 强制转换为int类型
  10. print(type(int(num)))
  11. print(type(int(num)))
  12. ===================================================================================
  13. '''
  14. 因为得到数据类型并不是程序想要的数据类型,这个时候需要借助数据类型转换的函数来转换
  15. '''
  16. num = 1
  17. str1 = '10'
  18. # 1.将数据转换成浮点类型 float()
  19. print(type(float(num)))
  20. print(float(num))
  21. print(float(str1))
  22. # 2. 将数据转换成字符串型 str()
  23. print(type(str(num)))
  24. # 3. 序列转换成元组 tuple()
  25. list1 = [10,20]
  26. print(type(list1))
  27. print(type(tuple(list1)))
  28. print(tuple(list1)) # (100, 200)
  29. # 4. 将一个元组转换成序列 list()
  30. t1 = (100,200)
  31. print(list(t1)) # [100, 200]
  32. # 5. eval() 计算在字符串中的有效Python表达式,并返回一个表达式。把字符串中的数据转换成他原本的类型
  33. str3 = '1'
  34. str4 = '2.1'
  35. str5 = '(10,20)'
  36. str6 = '[10,20]'
  37. print(type(eval(str3))) # <class 'int'>

2.7 复合赋值运算符和逻辑运算符

总结几个常用算数运算符

 

(1)**      返回a的b次幂,比如 2 ** 3,结果位8

(2)%      取余

(3)//      取整除,返回商的整数部分。

 

总结几个常用复合赋值运算符

 

直接上代码,一看就懂

  1. a = 10
  2. a += 1
  3. print(a) # 11
  4. b = 10
  5. b *= 3
  6. print(b) # 30
  7. # 注意:先算复合赋值运算符右侧的表达式,算复合赋值运算
  8. c = 10
  9. c += 1 + 2
  10. print(c) # 13
  11. # 测试
  12. d = 10
  13. d *= 1 + 2
  14. print(d) # 30 说明先算复合赋值运算符右侧的表达式,再算复合赋值运算
  15. =====================================================================
  16. # 逻辑运算符的运用
  17. a = 0
  18. b = 1
  19. c = 2
  20. # 1.and
  21. print((a < b) and (a < c)) # True
  22. print(a > b and a < c) # False
  23. # 2.or
  24. print(b > c or a < c) # True
  25. # 3.not
  26. print(not a < b) # False
  27. # 程序员的习惯
  28. # 加小括号为了避免歧义,增加优先级

3. Python常用语句

3.1 判断语句(if语句、if-else语句、if-elif语句)

直接上代码,一看就懂

  1. if True:
  2. print('条件成立了')
  3. # 下面的代码没有缩进到if语句块,所以和if条件无关
  4. print('这个代码执行吗?')
  5. =================================================================
  6. age = 20
  7. if age >= 18:
  8. print('已经成年可以上网')
  9. # 注意:不缩进的语句,跟if语句没有关系了。
  10. print('系统关闭')
  11. ================================================================
  12. # 注意:input接受用户输入的数据是字符串类型,这时需要转换为int类型才能进行判断
  13. age =int( input('请输入您的年龄:'))
  14. if age >= 18:
  15. print(f'您输入的年龄是{age},已经成年可以上网')
  16. ================================================================
  17. age =int( input('请输入您的年龄:'))
  18. if age >= 18:
  19. print(f'您输入的年龄是{age},已经成年可以上网')
  20. else:
  21. print(f'你输入的年龄是{age},小朋友,回家写作业去')
  22. ----------------------------------------------------------------
  23. age = int(input('请输入您的年龄'))
  24. if age < 18:
  25. print(f'您输入的年龄是{age},童工')
  26. elif (age >= 18) and (age <= 60):
  27. print(f'您输入的年龄是{age},合法')
  28. elif age > 60:
  29. print(f'您输入的年龄是{age},退休')
  30. -----------------------------------------------------------------
  31. age = int(input('请输入您的年龄'))
  32. if age < 18:
  33. print(f'您输入的年龄是{age},童工')
  34. # 条件的简化写法
  35. elif 18 <= age <= 60:
  36. print(f'您输入的年龄是{age},合法')
  37. elif age > 60:
  38. print(f'您输入的年龄是{age},退休')

3.2 判断语句(if嵌套)

直接上代码

  1. # if嵌套坐公交
  2. money = 1
  3. seat = 1
  4. if money == 1:
  5. print('土豪,请上车')
  6. # 判断是否能坐下
  7. if seat == 1:
  8. print('有空做,请坐下')
  9. else:
  10. print('没有空做,请等着....')
  11. else:
  12. print('没钱,不让上车')

3.3 判断语句(if 综合案例)

直接上代码

  1. # 猜拳游戏
  2. import random
  3. player = int(input('请出拳:0--石头;1--剪刀;2--布'))
  4. # computer = 1
  5. computer = random.randint(0,2)
  6. if ((player == 0) and (computer == 1)) or ((player == 1) and (computer == 2)) or ((player == 2) and (computer == 0)):
  7. print('玩家获胜,哈哈哈 ')
  8. elif player == computer:
  9. print('平局')
  10. else:
  11. print('电脑获胜')
  12. ================================================================================
  13. # 随机数的使用
  14. '''
  15. 步骤:
  16. 1.导入模块
  17. import random
  18. 2.使用这个模块中的功能
  19. random.randint
  20. '''
  21. import random
  22. num = random.randint(0,2)
  23. print(num)
  24. ================================================================================
  25. # 三目运算符
  26. a = 1
  27. b = 2
  28. c = a if a > b else b
  29. print(c)
  30. aa = 10
  31. bb = 6
  32. cc = aa - bb if aa > bb else bb - aa
  33. print(cc)

3.4 循环语句(while循环)

直接看个栗子就能上手使用while循环

  1. # 1-100 累加和
  2. i = 1
  3. result = 0
  4. while i <= 100:
  5. result += i
  6. i += 1
  7. print(result)

3.5 循环语句(while循环嵌套)


  1. # 重复打印5行星星
  2. j = 0
  3. while j < 5:
  4. # 一行星星的打印
  5. i = 0
  6. while i < 5:
  7. # 一行内的星星不能换行,取消print默认结束符\n
  8. print('*', end='')
  9. i += 1
  10. # 利用空的print来进行换行
  11. print()
  12. j += 1
  13. ============================================================
  14. # 打印三角形,每行星星的个数和行号数相等
  15. # j表示行号
  16. j = 0
  17. while j < 5:
  18. # 一行星星的打印
  19. i = 0
  20. while i <= j:
  21. # i表示每行里面星星的个数,这个数字要和行号相等所以i要和j联动
  22. print('*', end='')
  23. i += 1
  24. # 利用空的print来进行换行
  25. print()
  26. j += 1
  27. =============================================================
  28. j = 1
  29. while j <= 9:
  30. # 一行表达式的开始
  31. i = 1
  32. while i <= j:
  33. print(f'{i} * {j} = {i*j} ' , end='\t')
  34. i += 1
  35. # 一行表达式的结束
  36. print() # 自带换行符
  37. j += 1

3.6 循环语句(while...else)


  1. '''
  2. 所谓else指的是循环正常结束之后要执行的代码,
  3. 即如果是break终止循环的情况,else下方缩进的代码将不执行。
  4. '''
  5. i = 1
  6. while i <= 5:
  7. if i == 3:
  8. break
  9. print('媳妇我错了')
  10. i += 1
  11. else:
  12. print('媳妇原谅我了,真开心呐')
  13. ===================================================================
  14. """
  15. 因为continue是退出了当前一次循环,继续下一次循环,所以改循环在continue控制下
  16. 是可以正常结束的,当循环结束后,则执行了else缩进的代码。
  17. """
  18. i = 1
  19. while i <= 5:
  20. if i == 3:
  21. # 切记在执行continue之前,一定要改变计数器。否则就会陷入死循环
  22. i += 1
  23. continue
  24. print('媳妇我错了')
  25. i += 1
  26. else:
  27. print('媳妇原谅我了,真开心呐')

3.7 循环语句(for、for...else)


  1. str1 = 'ilovepython'
  2. for i in str1:
  3. # 当某些条件成立,退出循环 条件:i取到字符e的时候退出循环
  4. if i == 'e':
  5. # continue
  6. break
  7. print(i)
  8. ======================================================================
  9. 所谓else指的是循环正常结束之后要执行的代码,
  10. str1 = 'ilovepython'
  11. for i in str1:
  12. print(i)
  13. else:
  14. print('循环正常结束执行的else代码')

4. 字符串

4.1 字符串的使用

  1. # 字符串的使用区别
  2. a = 'hello' \
  3. ' world'
  4. print(a) # 输出一行 hello world
  5. c = '''hello
  6. world'''
  7. print(type(c))
  8. print(c) # 换行输出hello world
  9. d = """hello
  10. world"""
  11. print(type(d)) # <class 'str'>
  12. print(d) # 会直接换行输出
  13. # 打印 I'm Tom,使用单引号,必须使用转移字符,把他转义过去
  14. e = 'I\'m Tom'
  15. print(e)
  16. # 要是有单引号出现可以使用双引号括住
  17. f = "I' love Tom"
  18. print(f)
  19. ============================================================================
  20. # 字符串的输出
  21. name = 'Tom'
  22. print('我的名字是%s' % name)
  23. print(f'我的名字是{name}')
  24. ==============================================================================
  25. # 字符串的输入
  26. password = input('请输入您的密码')
  27. print(f'您输入的密码是{password}')
  28. # input接收到的用户输入的数据都是字符串
  29. print(type(password))

4.2 下标和切片

(1)下标

  1. str1 = 'abcdefg'
  2. print(str1)
  3. # 数据在运行过程中存储在内存
  4. # 使用字符串中特定的数据
  5. # 使用编号精确找到某个字符数据,下标索引值
  6. # str[下标]
  7. print(str1[0]) # 输出a
  8. print(str1[1]) # 输出b

(2)切片

  1. # 序列名[开始位置的下标:结束位置的下表:步长]
  2. # 取值区间左闭右开的
  3. str1 = '012345678'
  4. # print(str1[2:5:1]) 234
  5. # print(str1[2:5:2]) 24
  6. # print(str1[2:5]) 234 # 如果不写步长,默认步长是1
  7. # print(str1[:5]) 01234 # 如果不写开始,默认从0开始选取
  8. # print(str1[2:]) 2345678 # 如果不写结束,表示选取到最后
  9. # print(str1[:]) 012345678 # 如果不写开始和结束,表示选取所有
  10. # 负数测试
  11. # print(str1[::-1]) 876543210 # 如果步长为负数,表示倒叙选取
  12. # print(str1[-4:-1]) 567 下标为-1表示最后一个数据,依次向前类推
  13. # 终极测试
  14. # print(str1[-4:-1:1]) 567
  15. print(str1[-4:-1:-1]) # 不能选取出数据:从-4开始到-1结束,选取方向从左到右,但是-1步长:从右向左选取
  16. # 如果选取方向(下标开始到结束的方向)和步长方向冲突,则无法选取数据
  17. print(str1[-1:-4:-1]) # 876 方向一致就可以正确输出

小总结: 下标是精确的找到某一个元素,切片可以利用下标找到某一部分元素(左闭右开)

4.3 字符串常用操作方法(查找、修改、判断)

(1)查找

  1. mystr = 'hello world and itcast and itsmail and Python'
  2. # 1. find()
  3. print(mystr.find('and')) # 输出的是12,以为下标是从0开始数的
  4. print(mystr.fing('and',15,30))
  5. print(mystr.find('ands')) # -1,ands字串不存在
  6. # 2. index
  7. print(mystr.find('and')) # 12
  8. print(mystr.find('and',15,30)) #23
  9. print(mystr.index('ands')) #如果index查找字串不存在,报错
  10. # 3. count()
  11. print(mystr.count('and')) 3
  12. print(mystr.count('and',15,30)) 1
  13. print(mystr.count('ands')) 0
  14. # 4. rfind()
  15. print(mystr.rfind('and')) 35
  16. print(mystr.find('ands')) -1 如果没找到,则返回-1
  17. # 5. rindex()
  18. print(mystr.rindex('and')) 35 就算是到着找,它的下标还是从左到右从下标0开始的
  19. print(mystr.rindex('ands'))

(2)修改

  1. # 遇到列表、字典,内部的数据可以直接修改,修改的就是原列表或者原字典。叫做可变类型。
  2. # 字符串是一个不可变类型的数据
  3. mystr = 'hello world and itcast and itheima and Python'
  4. # replace() 把and换成he replace函数有返回值,返回值是修改后的字符串
  5. new_str = mystr.replace('and','he')
  6. # new_str = mystr.replace('and','he',1)
  7. # 替换次数如果超出字串出席那的次数,表示替换所有这个字串
  8. # new_str = mystr.replace('and','he',10)
  9. print(mystr)
  10. print(new_str)
  11. # 调用了replace函数后,发现原有字符串的数据并没有做到修改,修改后的数据是replace函数的返回值
  12. # 说明字符串是不可变数据类型
  13. # 数据是否可以改变划分为 可变类型,不可变类型
  14. # 2. split() 分割,返回一个列表,丢失分割字符
  15. list1 = mystr.split('and')
  16. print(list1)
  17. # 3. join() 合并列表里面的字符串数据为一个大字符串
  18. mylist = ['aa','bb','cc']
  19. new_str = '...'.join(mylist)
  20. print(new_str)

修改-非重点

  1. # 一、字符串对齐
  2. # mystr.ljust(10) 左对齐
  3. # mystr.rjust(10) 右对齐
  4. # mystr.rjust(10,'.') 以点作为填充效果
  5. # mystr.center(10) 中间居中
  6. # mystr.center(10,'.') 以点填充空白的地方
  7. # 二、大小写转换
  8. mystr = 'hello world and itcast and itheima and Python'
  9. # 1. capitalize() 字符串首字母大写
  10. # new_str = mystr.capitalize()
  11. # print(new_str)
  12. # 2. title():字符串中每个单词首字母大写
  13. # new_str = mystr.title()
  14. # print(new_str)
  15. # 3. upper():小写转大写
  16. # new_str = mystr.upper()
  17. # print(new_str)
  18. # 4. lower():大写转小写
  19. # new_str = mystr.lower()
  20. # print(new_str)
  21. # 三、删除空白字符
  22. str1 = " hello world and itcast and itheima and Python "
  23. # 1. lstrip():删除字符串左侧空白字符
  24. # print(str1)
  25. # new_str = str1.lstrip()
  26. # print(new_str)
  27. # 2. rstrip():删除字符串右侧空白字符
  28. new_str = str1.rstrip()
  29. print(str1)
  30. print(new_str)
  31. # 3. strip():删除字符串两侧空白字符
  32. # new_str = str1.strip()
  33. # print(new_str)

(3)判断

  1. # 判断开头或结尾
  2. mystr = 'hello world and itcast and itheima and Python'
  3. # 1. startswith(字串,开始位置下标,结束位置下标):判断字符串是否以某个字串开头
  4. print(mystr.startswith('hello'))
  5. print(mystr.startswith('hel'))
  6. print(mystr.startswith('hels'))
  7. print(mystr.startswith('hell',0,10)) 开始位置下标和结束位置下标可以省略
  8. # 2. endswich(字串,开始位置下标,结束位置下标),始位置下标和结束位置下标可以省略
  9. print(mystr.endswith('Python'))
  10. print(mystr.endswith('Pythons'))
  11. # 判断
  12. 3. isalpha():字母 纯字母才可以,如果中间有空格返回的false
  13. print(mystr.isalpha())
  14. # 4. isdigit():数字,中间也不能有空格,否则返回false
  15. print(mystr.isdigit())
  16. mystr1 = "12345"
  17. print(mystr1.isdigit())
  18. # 5. isalnum():数字或字母或组合
  19. print(mystr1.isalnum()) # True
  20. print(mystr.isalnum()) # False 因为中间有空格
  21. mystr2 = 'abc123'
  22. print(mystr2.isalnum())
  23. # 6. isspace():判断是否是空白,是返回True
  24. print(mystr.isspace()) # False
  25. mystr3 = ' '
  26. print(mystr3.isspace()) # True

5. 列表、元组

5.1 列表的创建和使用

  1. name_list = ['TOM','Lily','ROSE']
  2. print(name_list) # ['TOM', 'Lily', 'ROSE']
  3. # 根据下标进行输出
  4. print(name_list[0]) # 输出 TOM
  5. print(name_list[1]) # 输出 Lily
  6. print(name_list[2]) # 输出 ROSE

5.2 判断数据是否在列表中存在

  1. name_list = ['TOM','Lily','ROSE']
  2. # 1. in 如果在里面就返回true,否则false
  3. print('TOM' in name_list)
  4. print('TOMS' in name_list)
  5. # 2. not in 这个跟in相反
  6. print('TOM' not in name_list)
  7. print('TOMS' not in name_list)

体验案例

  1. name_list = ['TOM','List','ROSE']
  2. # 需求:注册邮箱,用户输入一个账户名,判断这个账号是否存在,如果存在,提示用户,否则提示可以注册
  3. name = input("请输入您的邮箱账号名:")
  4. if name in name_list:
  5. # 提示用户名已经存在
  6. print(f'您输入的名字是{name},此用户已经存在')
  7. else:
  8. # 提示可以注册
  9. print(f'您输入的名字是{name},可以注册')

5.3 列表的常见操作(查找、增加、删除、修改、赋值)

(1)查找(index、count、len)

  1. name_list = ['TOM','Lily','Rose']
  2. # 1.index()
  3. print(name_list.index('TOM')) #返回 0
  4. # print(name_list.index('TOMs')) 没有找到,报错
  5. # 2. count()
  6. print(name_list.count('TOM'))
  7. # print(name_list.count('TOMS')) # 报错
  8. # 3.len()
  9. print(len(name_list)) # 输出3

(2)增加(append、extend、insert)

  1. # 1. 列表数据是可变的 -- 列表是可变类型
  2. # 2. append函数追加数据的时候如果是一个序列,追加整个序列到列表的结尾
  3. name_list = ['TOM','Lily','ROSE']
  4. name_list.append('xiaoming')
  5. name_list.append([11,22])
  6. name_list.append(11)
  7. print(name_list) # 输出结果为:['TOM', 'Lily', 'ROSE', 'xiaoming', [11, 22], 11]
  1. # extent() 追加数据是一个序列,把数据序列里面的数据拆开然后逐一追加到列表的结尾
  2. name_list = ['TOM','Lily','ROSE']
  3. name_list.extend('xiaoming')
  4. # 把序列拆开,逐一的放到列表中
  5. name_list.extend(['xiaoming','xiaojun'])
  6. print(name_list)
  7. # 输出结果为:['TOM', 'Lily', 'ROSE', 'x', 'i', 'a', 'o', 'm', 'i', 'n', 'g', 'xiaoming', 'xiaojun']
  1. name_list = ['Tom','Lily','ROSE']
  2. # name_list.insert(下标,数据) 在指定位置加入数据
  3. name_list.insert(1,'aa')
  4. print(name_list) # 输出的结果为:['Tom', 'aa', 'Lily', 'ROSE']

(3)删除(del、pop、remove、clear)

  1. name_list = ['Tom','Lily','ROSE']
  2. # 1. del
  3. # del name_list
  4. # print(name_list) 已经把列表已经删除,已经没有列表了
  5. # del 也可以指定下标的数据
  6. # del name_list[0]
  7. # print(name_list) # 输出的结果 ['Lily', 'ROSE']
  8. # 2. pop() 删除指定下标的数据,如果不指定下标,默认删除最后一个数据
  9. # 无论是按照下标还是删除最后一个,pop函数都会返回这个被删除的数据. 比较厉害的是删除一个数据能用一个变量去接收
  10. del_name = name_list.pop()
  11. del_name = name_list.pop(1)
  12. print(del_name)
  13. print(name_list)
  14. # 3. remove(数据) 按照指定的数据进行删除的
  15. # name_list.remove('ROSE')
  16. # print(name_list)
  17. # 4. clear() -- 清空
  18. # name_list.clear()
  19. # print(name_list) # 直接清空整个数据

(4)修改(reverse、sort)

  1. name_list = ['TOM','Lily','ROSE']
  2. # 修改指定下标的数据
  3. # name_list[0] = 'aaa'
  4. # print(name_list) # ['aaa', 'Lily', 'ROSE']
  5. # 2. 逆序 reverse()
  6. list1 = [1, 3, 4, 2, 5]
  7. # list1.reverse()
  8. # print(list1)
  9. # 3. sort() 排序:升序(默认)和 降序
  10. # list1.sort() # 升序
  11. list1.sort(reverse=False) # 升序 [1, 2, 3, 4, 5]
  12. list1.sort(reverse=True) # 降序 [5, 4, 3, 2, 1]
  13. print(list1)

(5)赋值

  1. name_list = ['tom','lucy','jack']
  2. list1 = name_list.copy()
  3. print(list1)
  4. print(name_list)

5.4 列表的循环遍历(for、while)

for循环

  1. name_list = ['tom','rose','jack']
  2. i = 0
  3. while i < len(name_list):
  4. print(name_list[i])
  5. i += 1

while循环

  1. # for循环的代码量要少于while的代码量
  2. # 一般在工作岗位下,涉及到遍历序列当中的数据的话,一般优选于for循环
  3. name_list = ['tom','rose','jack']
  4. for i in name_list:
  5. # 遍历序列中的数据
  6. print(i)

5.5 列表的嵌套

列表嵌套时的数据查询

  1. name_list = [['TOM', 'Lily','Rose'], ['张三','李四','王二'], [ '小红', '小绿', '小蓝']]
  2. # print(name_list)
  3. # 列表嵌套的时候的数据查询
  4. print(name_list[0])
  5. print(name_list[0][0])

案例-随机分配办公室

  1. # 需求:八位老师,3个办公室,将8为老师随机分配到3个办公室
  2. '''
  3. 步骤::
  4. 1.准备数据
  5. 1.1 8位老师 -- 列表
  6. 1.2 3个办公室 -- 列表嵌套
  7. 2. 分配老师到办公室
  8. 随机分配
  9. 就是把老师的名字写入到办公室列表 --办公室列表追加老师数据
  10. 3. 验证是否分配成功
  11. 打印办公室详细信息: 每个办公室的人数和对应的老师名字
  12. '''
  13. import random # 随机模块
  14. # 1. 准备数据
  15. teachers = ['A','B','C','D','E','F','G','H'] # 列表存数据
  16. offices = [[], [], []] # 嵌套列表
  17. # 2. 分配老师到办公室 -- 取到每个老师放到办公室列表 -- 遍历老师列表数据
  18. for name in teachers:
  19. # 列表追加数据 -- append(整体添加) --extend(拆开添加) --insert(在指定位置加入数据)
  20. num = random.randint(0,2)
  21. offices[num].append(name) #追加数据
  22. # print(num)
  23. # print(offices)
  24. # 为了更贴合生活,把各个办公室子列表加一个办公室编号1 ,2 ,3
  25. i = 1
  26. # 3. 验证是否成功
  27. for office in offices:
  28. # 打印办公室人数 -- 子列表数据的个数 len()
  29. print(f'办公室{i}的人数是{len(office)}')
  30. # 打印老师的名字
  31. # print() -- 每个自立表里面的名字个数不一定 -- 遍历 -- 子列表
  32. for name in office:
  33. print(name)
  34. i += 1

5.6 元组的访问

注意: 如果是单个数据的元组,那么后面必须加逗号,否则就不是元组的数据类型,而是整个数据本身的数据类型

  1. # 输出元组
  2. t1 = (10, 20, 30)
  3. print(t1) # 输出 (10, 20, 30)
  4. # 如果是单个数据的元组,那么后面必须加逗号,否则就不是元组的数据类型,而是整个数据本身的数据类型
  5. # 1.多个数据元组
  6. t1 = (10, 20, 30)
  7. print(type(t1)) # 输出 <class 'tuple'>
  8. # 2. 单个数据元组
  9. t2 = (10,)
  10. print(type(t2)) # 输出 <class 'tuple'>
  11. =====================================================================
  12. # 3. 如果单个数据的元组不加逗号
  13. t3 = (10)
  14. print(type(t3)) # 输出 <class 'int'>
  15. t4 = ('aaa')
  16. print(type(t4)) # 输出 <class 'str'>
  17. ================================================================================
  18. t5 = ('aaa',)
  19. print(type(t5)) # 输出 <class 'tuple'>

5.7 元组常见操作(查找、修改)

(1)查找

  1. t1 = ('aa', 'bb', 'cc')
  2. # 1. 下标
  3. print(t1[0]) # aa
  4. # 2. index()
  5. print(t1.index('aa')) # 输出0 其实有参数二,有参数三对应一个查找的范围,如果没有找到就直接报错。
  6. # 3. count()
  7. print(t1.count('aa')) # 统计aa的次数,输出结果为1
  8. # 4. len()
  9. print(len(t1)) # 统计整个元组的个数,输出结果为3

(2)修改

  1. # 元组确实不能修改,但是元组中含有的列表可以修改。
  2. # 工作中尽可能遵循一个规则,但凡是出现在小括号元组里面的数据,尽可以能靠自觉去要求不做修改
  3. # 工作中如果是同事的代码,有数据出现在元组中,尽可能在查找操作的时候,小心一点,尽可能不要去修改这一部分的操作。
  4. t1 = ('aa', 'bb', 'cc')
  5. # t1[0] = 'aaa' 这个操作是错的,是不能修改的。
  6. t2 = ('aa', 'bb', ['cc', 'dd'])
  7. print(t2[2])
  8. t2[2][0] = 'TOM'
  9. print(t2)

6. 字典、集合

6.1 字典的创建

直接上栗子,一看就懂

  1. '''
  2. 字典里面的数据是以键值对形式出现,字典数据和数据顺序没有关系,
  3. 即字典不支持下标,后期无论数据如何变化,只需要按照对应的键的名字来查找数据即可
  4. '''
  5. # 字典特点: 1. 符号为大括号 2. 数据为键值对形式出现 3. 各个键值对之间用逗号隔开
  6. # 符合上面三个条件就是字典,字典不支持下标。
  7. # {} 里面放入键值对,用逗号隔开
  8. # 创建有数据的字典
  9. dict1 = {'name' : 'tom', 'age' : 18, 'gender': '男'}
  10. # 查看一下dict1的数据类型
  11. print(type(dict1)) # <class 'dict'>
  12. # 创建空字典
  13. dict2 = {}
  14. print(type(dict2)) # <class 'dict'>
  15. # 用dict()函数来创建空字典
  16. dict3 = dict()
  17. print(type(dict3))
  18. print(dict3) # 输出 {}

6.2 字典常用操作(增、删、改、查)

新增数据

  1. '''
  2. 新增数据的写法:字典序列[key] = 值
  3. 这里的字典为可变类型,打印原字典名,就能看到修改新增之后的数据。之前的元组是不可变类型,是不能修改内部数据的。
  4. 注意: 如果key存在则修改这个key对应的值;如果key不存在则新增此键值对
  5. '''
  6. dict1 = {'name': 'TOM' , 'age':20 , 'gender': '男' }
  7. # name这个键存在这个字典中,所以修改键值对
  8. dict1['name'] = 'ROSE'
  9. print(dict1) # 输出修改后的字典 {'name': 'ROSE', 'age': 20, 'gender': '男'}
  10. # id这个key不存在这个字典中,所以新增此键值对
  11. dict1['id'] = 110
  12. print(dict1) # 输出新增后的字典{'name': 'TOM', 'age': 20, 'gender': '男', 'id': 110}

删除数据

  1. dict1 = {'name': 'TOM', 'age': 20 , 'gender': '男'}
  2. # 1.del 删除字典或指定的键值对
  3. # 删除字典
  4. # del(dict1)
  5. # print(dict1) # 报错,说明已经删除了
  6. # 删除指定的字符串
  7. # del dict1['name'] # 删除key为name的键值对
  8. # del dict1['names'] # 如果删除的内容不存在就会报错
  9. # print(dict1) # {'age': 20, 'gender': '男'}
  10. # 2. clear() 清空字典
  11. dict1.clear()
  12. print(dict1) # 输出{}

修改数据

  1. dict1 = {'name':'tom', 'age':20 , 'gender':'男'}
  2. # dict1['name'] = 'lily'
  3. # print(dict1) # {'name': 'lily', 'age': 20, 'gender': '男'}
  4. dict1['id'] = 2020
  5. print(dict1) # {'name': 'tom', 'age': 20, 'gender': '男', 'id': 2020}

查找数据

  1. # 可迭代的对象指代的是可以用for遍历的对象
  2. dict1 = {'name':'tom', 'age': 20 , 'gender':'男'}
  3. # 1. [key]
  4. # print(dict1['name']) # 输出tom
  5. # print(dict1['names']) # 如果查找的值是不存在的key,则会报错
  6. # 2.函数
  7. # 2.1 get()
  8. # 语法: 字典序列.get(key,默认值)
  9. # print(dict1.get('name')) # tom
  10. # print(dict1.get('names')) # 如果键值不存在,返回None
  11. # print(dict1.get('names','不存在')) # 如果键值不存在,返回“不存在”
  12. # 2.2 keys() 查找字典中所有的key,返回可迭代对象
  13. print(dict1.keys()) # 输出 dict_keys(['name', 'age', 'gender'])
  14. # 2.3 value() 查找字典中所有的value,返回可迭代对象
  15. print(dict1.values()) # 输出 dict_values(['tom', 20, '男'])
  16. # 2.4 items() 查找字典中所有的键值对,返回可迭代对象,里面的数据是元组,元组数据1是字典的key,元组数据2是字典key对应的值
  17. print(dict1.items()) # 输出dict_items([('name', 'tom'), ('age', 20), ('gender', '男')])

6.3 字典的遍历

  1. # key遍历
  2. dict1 = {'name':'tom', 'age':20 , 'gender': '男'}
  3. for key in dict1.keys():
  4. print(key)
  5. '''
  6. 输出结果:
  7. name
  8. age
  9. gender
  10. '''
  11. ==================================================================
  12. # value遍历
  13. dict1 = {'name':'tom', 'age':20, 'gender':'男'}
  14. for value in dict1.values():
  15. print(value)
  16. '''
  17. 输出结果:
  18. tom
  19. 20

  20. '''
  21. =====================================================================
  22. # 键值对遍历
  23. # dict1.items 可迭代对象的内部是元组
  24. dict1 = {'name':'tom', 'age': 20 , 'gender': '男'}
  25. for item in dict1.items():
  26. print(item)
  27. '''
  28. 输出结果:
  29. ('name', 'tom')
  30. ('age', 20)
  31. ('gender', '')
  32. '''
  33. =====================================================================
  34. # 键值对拆包遍历
  35. dict1 = {'name':'tom', 'age':'20', 'gender':'男'}
  36. # xx.items():返回可迭代对象,内部是元组,元组有2个数据
  37. # 元组数据1是字典的key,元组数据2是字典的value
  38. for key,value in dict1.items():
  39. # print(key)
  40. # print(value)
  41. print(f'{key}={value}')
  42. '''
  43. 输出的内容是:
  44. name=tom
  45. age=20
  46. gender=男
  47. '''

6.4 字典小总结

  1. 定义字典
  2. dict1 = {'name':'TOM', 'age':30}
  3. dict2 = {}
  4. dict3 = dict()
  5. 常见操作
  6. 增/改
  7. 字典序列[key] =
  8. 查找
  9. 字典序列[key]
  10. keys()
  11. values()
  12. items()

6.5 集合的创建

直接上栗子:

  1. '''
  2. 1 .集合有一个特点:去重,也就是说集合当中的数据是没有重复的,如果有不允许重复的数据出现的时候,这是用用集合存储数据即可。
  3. 2. 创建集合使用{} 或 set();但是如果要创建空集合只能使用set(),因为 {} 用来创建空字典的
  4. 3. 数据的展示循序跟写代码的顺序不一样,集合没有顺序,因为没有顺序,所以不支持下标的操作。
  5. '''
  6. # 1. 创建有数据的集合
  7. s1 = {10,20,30,40,50}
  8. print(s1)
  9. s2 = {10,20,30,20,30}
  10. print(s2) #{10, 20, 30} 输出结果 因为有去重功能
  11. s3 = set('姓名')
  12. print(s3) # {'姓', '名'}
  13. # 2.创建新集合
  14. s4 = set()
  15. print(s4) # set()
  16. print(type(s4)) # <class 'set'>
  17. # 这里不能用{}来创建新集合
  18. s5 = {}
  19. print(type(s5)) # 输出的结果是<class 'dict'> ,因为这时字典的创建方式

6.6 集合常见操作(增、删、查)

增加数据

  1. s1 = {10,20}
  2. # 1. 集合是可变类型
  3. # add() 用来增加一个单一数据到原集合当中来
  4. s1.add(100)
  5. print(s1) # {100, 10, 20}
  6. # 集合有去重功能,如果追加的数据是集合已有数据,则什么事情都不做
  7. s1.add(100)
  8. print(s1)
  9. # update() 用来增加一个数据序列到原集合当中来
  10. s1.update([10,20,30,40,50])
  11. print(s1) # 输出 {100, 40, 10, 50, 20, 30} 有去重功能,如果添加的数据原集合中有的,则不进行操作。
  12. # s1.update(299) 不能直接添加单一数据
  13. s1.update([299]) # 这种方式的添加就可以
  14. print(s1)

删除数据

  1. s1 = {10,20,30}
  2. s2 = {10,20,30}
  3. s3 = {10,20,30}
  4. # 1. remove():删除指定数据,如果数据不存在则报错
  5. s1.remove(10)
  6. print(s1) # {20, 30}
  7. # s1.remove(333)
  8. # print(s1) # 报错,以为删除的没有这个数据
  9. ============================================================================
  10. # 2. discard():删除指定数据,如果数据不存在不报错
  11. s2.discard(10)
  12. print(s2) # 输出 {20, 30}
  13. s2.discard(666) # 就算删除的数据不存在也不会报错
  14. ============================================================================
  15. # 3. pop():随机删除某个数据,并返回这个数据
  16. del_num = s3.pop()
  17. print(del_num) # 10
  18. print(s1) # {20, 30}

查找数据


  1. s1 = {10,20,30,40}
  2. # 用in和not in 判断数据10是否在集合中存在
  3. print(10 in s1) # Ture
  4. print(10 not in s1) # False

6.7 集合小总结

  1. '''
  2. 创建结合
  3. 有数据集合
  4. s1 = {数据1,数据2,...}
  5. 无数据集合
  6. s1 = set()
  7. 常见操作
  8. 增加数据
  9. add()
  10. update()
  11. 删除数据
  12. remove()
  13. discard()
  14. '''

最后,欢迎关注公众号【C you again】,获取更多IT技术文章、Java开发面试题、计算机类毕业设计等等。。。。



原文链接:https://blog.csdn.net/weixin_46818279/article/details/108576298

【详细】Python基础(一)的更多相关文章

  1. 【Python基础】*args,**args的详细用法

     Python基础知识:*args,**args的详细用法 参考:https://blog.csdn.net/qq_29287973/article/details/78040291 *args 不定 ...

  2. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  3. 比较详细Python正则表达式操作指南(re使用)

    比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...

  4. python基础——面向对象编程

    python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

  5. 【Python全栈笔记】00 12-14 Oct Linux 和 Python 基础

    Linux 基础认识 更加稳定,安全,开源 设置好ssh协议后可以通过windows系统连接Linux,基于ssh协议进行通信 '/' 为根目录 cd / -> 切换到根目录 ls -lh 列出 ...

  6. Python基础教程【读书笔记】 - 2016/7/10

    希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第五波:第1章  基础知识 [总览]  介绍如何得到所需的软件,然后讲一点点算法及其主要的组成.学习变量variable ...

  7. python基础教程笔记—即时标记(详解)

    最近一直在学习python,语法部分差不多看完了,想写一写python基础教程后面的第一个项目.因为我在网上看到的别人的博客讲解都并不是特别详细,仅仅是贴一下代码,书上内容照搬一下,对于当时刚学习py ...

  8. 第一篇:python基础

    python基础   python基础 本节内容 python起源 python的发展史 为什么选择python3 第一个python程序 变量定义 表达式和运算符 用户输入 流程控制 判断 流程控制 ...

  9. Python之路,Day4 - Python基础4 (new版)

    Python之路,Day4 - Python基础4 (new版)   本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...

随机推荐

  1. Spark流式状态管理(updateStateByKey、mapWithState等)

    通常使用Spark的流式框架如Spark Streaming,做无状态的流式计算是非常方便的,仅需处理每个批次时间间隔内的数据即可,不需要关注之前的数据,这是建立在业务需求对批次之间的数据没有联系的基 ...

  2. 【ZJOI2019】线段树(线段树 & dp)

    Link UOJ LOJ Luogu Solution 很玄妙的一道题,考察了对线段树较本质的理解 然而我并不会这个所谓最可做的题 首先,虽然题目很复杂,好像每个点的标记变化都很玄学,但是我们可以深入 ...

  3. postgresql 运行sql文件

    方法一: [postgres@node01 ~]$ psql -Upostgres postgres=# \l List of databases Name | Owner | Encoding | ...

  4. 【面试专栏】Java并发编程:volatile关键字

    1.  内存模型 若一个变量在多线程环境下同时操作,则可能出现结果不一致的情况.这就是常说的缓存不一致性问题. 解决缓存不一致问题,通常有两个解决方案: 通过在总线加LOCK#锁的方式 因为CPU和其 ...

  5. torch中squeeze与unsqueeze用法

    import torch torch中的squeeze与unsqueeze作用是去除/添加维度为1的行 例如,a=torch.randn(2,3) 那么b=a.unsqueeze(0),b为(1,2, ...

  6. [OI笔记]NOIP2017前(退役前)模拟赛的总结

    好久没写blog了- 在noip2017前的最后几天,也就是在我可能将要AFO的前几天写点东西吧- 记录这最后几个月打的那些大大小小的模拟赛 一些比赛由于不允许公开所以就没有贴链接跟题面了- 2017 ...

  7. phpMyadmin(CVE-2018-12613)后台任意文件包含漏洞分析

    前言 影响版本:4.8.0--4.8.1 本次复现使用4.8.1     点击下载 复现平台为vulhub.此漏洞复现平台如何安装使用不在赘述.请自行百度. 漏洞复现 漏洞环境启动成功. 访问该漏洞地 ...

  8. 01 . GitLab简介及环境部署

    GitLab简介 最初,该产品名为GitLab,是完全免费的开源软件,按照MIT许可证分发. 2013年7月,产品被拆分为:GitLabCE(社区版)和GitLabEE(企业版),当时,GitLabC ...

  9. Listary效率快捷键

    快捷键 打开搜索框快捷键: 双击Ctrl键 上一个项目:向上键 下一个项目:向下键/Tap 打开动作:Enter 属性窗口:Ctrl+O (查询)关键字 作用范围:搜索框 使用方法:命令+空格+关键字 ...

  10. Selenium多浏览器测试

    在浏览器的兼容性测试中,会测试产品在不同浏览器上的兼容性,比较主流的浏览器有IE.Firefox.Chrome,Opera,Safari等.还有其它如360.QQ.遨游.百度等浏览器都是基于IE或者c ...