本教程的知识点为:计算机组成 计算机是由什么组成的? 1. 硬件系统: 2. 软件系统: 目标 运算符的分类 1. 算数运算符 2. 赋值运算符 3. 复合赋值运算符 判断语句和循环语句 if嵌套 1. if嵌套的格式 2. if嵌套的应用 if嵌套执行流程 容器:字符串、列表、元组、字典 字符串介绍 一. 认识字符串 1.1 字符串特征 字符串输出 容器:字符串、列表、元组、字典 列表的相关操作 1添加元素("增"append, extend, insert)1 append extend 容器:字符串、列表、元组、字典 字典的常见操作1 1查看元素1 2修改元素2 3添加元素3 函数介绍 1什么是函数1 小总结: 函数定义和调用 1定义函数1 多函数程序的基本使用流程 1. 使用全局变量 2. 使用函数的返回值、参数 3. 函数嵌套调用 函数返回值(二) 函数应用:学生管理系统 递归函数 1什么是递归函数1 2递归函数的作用2 看阶乘的规律 文件操作介绍 1什么是文件1 2文件的作用2 文件的打开与关闭 1打开文件1 面向对象编程介绍 面向对象 1. 概述 2. 生活举例 类和对象 init()方法 说明: 问题: 有参数的__init__()方法 说明: 继承介绍以及单继承 1. 现实中的继承 2. 程序中的继承 单继承:子类只继承一个父类 说明: super()的使用 问题: 知识点: 私有权限 面向对象三大特性:封装、继承、多态 静态方法和类方法 1. 类方法 2. 静态方法 总结 异常 模块 1Python中的模块1 2import2 3from…import3 注意

完整笔记资料代码->:https://gitee.com/yinuo112/Backend/tree/master/Python/嘿马python基础入门全体系教程/note.md

感兴趣的小伙伴可以自取哦~


全套教程部分目录:


部分文件图片:

容器:字符串、列表、元组、字典


学习目标:

  1. 能够说出容器类型有什么用
  2. 能够说出常用 Python 容器的名字
  3. 能够说出切片语法的用途
  4. 能够说出容器中的索引指的是什么
  5. 能够说出如何定义一个字符串
  6. 能够说出字符串容器的特性
  7. 能够说出至少5个字符串方法名字和作用
  8. 能够使用切片语法获得指定索引区间的子串
  9. 能够说出如何使用 while 和 for 循环来遍历字符串
  10. 能够说出如何定义一个列表
  11. 能够说出列表容器和字符串容器的区别
  12. 能够说出至少5个列表方法名字和作用
  13. 能够使用切片语法获得列表指定索引区间的元素
  14. 能够说出如何使用 while 和 for 循环来遍历列表中的元素
  15. 能够说出如何定义一个列表
  16. 能够说出元组和列表的区别
  17. 能够说出如何使用 while 和 for 循环来遍历元组中的元素
  18. 能够说出元组支持哪些操作
  19. 能够说出如何定义一个字典
  20. 能够说出字典和列表的区别
  21. 能够说出如何使用 for 循环来遍历列表中的键、值和键值对
  22. 能够说出字典键和值的特点

字符串介绍

一. 认识字符串

字符串是 Python 中最常用的数据类型。我们一般使用引号来创建字符串。创建字符串很简单,只要为变量分配一个值即可。

a = 'hello world'
b = "abcdefg"
print(type(a))
print(type(b))

注意:控制台显示结果为<class 'str'>, 即数据类型为str(字符串)。

1.1 字符串特征

  • 一对引号字符串
name1 = 'Tom'
name2 = "Rose"
  • 三引号字符串
name3 = ''' Tom '''
name4 = """ Rose """
a = ''' i am Tom, 
        nice to meet you! '''

b = """ i am Rose, 
        nice to meet you! """

注意:三引号形式的字符串支持换行。

思考:如果创建一个字符串I'm Tom?

c = "I'm Tom"
d = 'I\'m Tom'

小总结:

  • 双引号或者单引号中的数据,就是字符串

字符串输出

1.格式化操作符

name = '君哥'
    position = '讲师'
    address = '北京市'

    print('--------------------------------------------------')
    print("姓名:%s" % name)
    print("职位:%s" % position)
    print("公司地址:%s" % address)
    print('--------------------------------------------------')

结果:

--------------------------------------------------
    姓名: 君哥
    职位: 讲师
    公司地址: 北京市
    --------------------------------------------------

2.f-strings

f-strings 提供一种简洁易读的方式, 可以在字符串中包含 Python 表达式. f-strings 以字母 'f' 或 'F' 为前缀, 格式化字符串使用一对单引号、双引号、三单引号、三双引号. 格式化字符串中

name = '君哥'
age = 33
format_string1 = f'我的名字是 {name}, 我的年龄是 {age}'
format_string2 = f"我的名字是 {name}, 我的年龄是 {age}"
format_string3 = F'''我的名字是 {name}, 我的年龄是 {age}'''
format_string4 = F"""我的名字是 {name}, 我的年龄是 {age}"""
format_string5 = f'3 + 5 = {3 + 5}'
a = 10
b = 20
format_string6 = f'3 + 5 = {a + b}'
  
  
# 两个花括号会被替换为一个花括号, 注意{{}} 不表示表达式
  
  
format_string7 = F'我的名字是 {{name}}, 我的年龄是 {{age}}'

print(format_string1)
print(format_string2)
print(format_string3)
print(format_string4)
print(format_string5)
print(format_string6)
print(format_string7)

字符串输入

之前在学习input的时候,通过它能够完成从键盘获取数据,然后保存到指定的变量中;

注意:input获取的数据,都以字符串的方式进行保存,即使输入的是数字,那么也是以字符串方式保存

demo:

userName = input('请输入用户名:')
    print("用户名为:%s" % userName)

    password = input('请输入密码:')
    print("密码为:%s" % password)

结果:(根据输入的不同结果也不同)

请输入用户名:itheima
    用户名为: itheima
    请输入密码:haohaoxuexitiantianxiangshang
    密码为: haohaoxuexitiantianxiangshang

下标和切片

1. 下标索引

所谓“下标”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间

  • 生活中的 "下标"

超市储物柜

高铁二等座

高铁一等座

绿皮车

  • 字符串中"下标"的使用

列表与元组支持下标索引好理解,字符串实际上就是字符的数组,所以也支持下标索引。

如果有字符串:name = 'abcdef',在内存中的实际存储如下:

如果想取出部分字符,那么可以通过下标的方法,(注意python中下标从 0 开始)

name = 'abcdef'

   print(name[0])
   print(name[1])
   print(name[2])

运行结果:

a
b
c

2. 切片

切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。

切片的语法:[起始:结束:步长]

注意:选取的区间从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身),步长表示选取间隔。

我们以字符串为例讲解。

如果取出一部分,则可以在中括号[]中,使用:

name = 'abcdef'

     print(name[0:3]) # 取 下标0~2 的字符

运行结果:

name = 'abcdef'

     print(name[0:5]) # 取 下标为0~4 的字符

运行结果:

name = 'abcdef'

     print(name[3:5]) # 取 下标为3、4 的字符

运行结果:

name = 'abcdef'

     print(name[2:]) # 取 下标为2开始到最后的字符

运行结果:

name = 'abcdef'

     print(name[1:-1]) # 取 下标为1开始 到 最后第2个  之间的字符

运行结果:

>>> a = "abcdef"
 >>> a[:3]
 'abc'
 >>> a[::2]
 'ace'
 >>> a[5:1:2] 
 ''
 >>> a[1:5:2]
 'bd'
 >>> a[::-2]
 'fdb' 
 >>> a[5:1:-2]
 'fd'

想一想

  • (面试题)给定一个字符串aStr, 请反转字符串
  
  
# 索引是通过下标取某一个元素
  
  
  
  
# 切片是通过下标去某一段元素
  
  

s = 'Hello World!'

print(s[4])

print(s)

print(s[:]) # 取出所有元素(没有起始位和结束位之分),默认步长为1

print(s[1:]) # 从下标为1开始,取出 后面所有的元素(没有结束位)

print(s[:5])  # 从起始位置开始,取到 下标为5的前一个元素(不包括结束位本身)

print(s[:-1]) # 从起始位置开始,取到 倒数第一个元素(不包括结束位本身)

print(s[-4:-1]) # 从倒数第4个元素开始,取到 倒数第1个元素(不包括结束位本身)

print(s[1:5:2]) # 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身)

  
  
# python 字符串快速逆置
  
  
print(s[::-1])  # 从后向前,按步长为1进行取值

字符串常见操作

如有字符串mystr = 'hello world itcast and itcastcpp',以下是常见的操作

<1>find1>

检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1

  1. 语法
字符串序列.find(子串, 开始位置下标, 结束位置下标)
  1. 示例
mystr.find(str, start=0, end=len(mystr))

<2>index2>

跟find()方法一样,只不过如果str不在 mystr中会报一个异常.

  1. 语法
字符串序列.index(子串, 开始位置下标, 结束位置下标)
  1. 示例
mystr.index(str, start=0, end=len(mystr))

<3>count3>

返回 str在start和end之间 在 mystr里面出现的次数

  1. 语法
字符串序列.count(子串, 开始位置下标, 结束位置下标)
  1. 示例
mystr.count(str, start=0, end=len(mystr))

<4>replace4>

把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.

  1. 语法
字符串序列.replace(旧子串, 新子串, 替换次数)
  1. 示例
mystr.replace(str1, str2,  mystr.count(str1))

<5>split5>

以 str 为分隔符切片 mystr,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串

  1. 语法
字符串序列.split(分割字符, num)
  1. 示例
mystr.split(str=" ", 2)

<6>capitalize6>

把字符串的第一个字符大写

mystr.capitalize()

<7>title7>

把字符串的每个单词首字母大写

>>> a = "hello itcast"
>>> a.title()
'Hello Itcast'
<8>startswith8>

检查字符串是否是以 hello 开头, 是则返回 True,否则返回 False

  1. 语法
字符串序列.startswith(子串, 开始位置下标, 结束位置下标)

2.示例

mystr.startswith(hello)

<9>endswith9>

检查字符串是否以obj结束,如果是返回True,否则返回 False.

mystr.endswith(obj)

<10>lower10>

转换 mystr 中所有大写字符为小写

mystr.lower()

<11>upper11>

转换 mystr 中的小写字母为大写

mystr.upper()

<12>ljust12>

返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串

mystr.ljust(width)

<13>rjust13>

返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串

mystr.rjust(width)

<14>center14>

返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

mystr.center(width)

<15>lstrip15>

删除 mystr 左边的空白字符

mystr.lstrip()

<16>rstrip16>

删除 mystr 字符串末尾的空白字符

mystr.rstrip()

<17>strip17>

删除mystr字符串两端的空白字符

>>> a = "\n\t itcast \t\n"
>>> a.strip()
'itcast'

<18>rfind18>

类似于 find()函数,不过是从右边开始查找.

mystr.rfind(str, start=0,end=len(mystr) )

<19>rindex19>

类似于 index(),不过是从右边开始.

mystr.rindex( str, start=0,end=len(mystr))

<20>partition20>

把mystr以str分割成三部分,str前,str和str后

mystr.partition(str)

<21>rpartition21>

类似于 partition()函数,不过是从右边开始.

mystr.rpartition(str)

<22>splitlines22>

按照行分隔,返回一个包含各行作为元素的列表

mystr.splitlines()

<23>isalpha23>

如果 mystr 所有字符都是字母 则返回 True,否则返回 False

mystr.isalpha()

<24>isdigit24>

如果 mystr 只包含数字则返回 True 否则返回 False.

mystr.isdigit()

<25>isalnum25>

如果 mystr 所有字符都是字母或数字则返回 True,否则返回 False

mystr.isalnum()

<26>isspace26>

如果 mystr 中只包含空格,则返回 True,否则返回 False.

mystr.isspace()

<27>join27>

mystr 中每个元素后面插入str,构造出一个新的字符串

  1. 语法
字符或子串.join(多字符串组成的序列)
  1. 示例
mystr.join(str)

想一想

  • (面试题)给定一个字符串aStr,返回使用空格或者'\t'分割后的倒数第二个子串

列表介绍

想一想:

前面学习的字符串可以用来存储一串信息,那么想一想,怎样存储咱们班所有同学的名字呢?

定义100个变量,每个变量存放一个学生的姓名可行吗?有更好的办法吗?

答:

列表

<1>列表的格式1>

变量A的类型为列表

namesList = ['xiaoWang','xiaoZhang','xiaoHua']

比C语言的数组强大的地方在于列表中的元素可以是不同类型的

testList = [1, 'a']

<2>打印列表2>

demo:

namesList = ['xiaoWang','xiaoZhang','xiaoHua']
    print(namesList[0])
    print(namesList[1])
    print(namesList[2])

结果:

xiaoWang
    xiaoZhang
    xiaoHua