本教程的知识点为:计算机组成 计算机是由什么组成的? 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
感兴趣的小伙伴可以自取哦~
全套教程部分目录:
部分文件图片:
容器:字符串、列表、元组、字典
学习目标:
- 能够说出容器类型有什么用
- 能够说出常用 Python 容器的名字
- 能够说出切片语法的用途
- 能够说出容器中的索引指的是什么
- 能够说出如何定义一个字符串
- 能够说出字符串容器的特性
- 能够说出至少5个字符串方法名字和作用
- 能够使用切片语法获得指定索引区间的子串
- 能够说出如何使用 while 和 for 循环来遍历字符串
- 能够说出如何定义一个列表
- 能够说出列表容器和字符串容器的区别
- 能够说出至少5个列表方法名字和作用
- 能够使用切片语法获得列表指定索引区间的元素
- 能够说出如何使用 while 和 for 循环来遍历列表中的元素
- 能够说出如何定义一个列表
- 能够说出元组和列表的区别
- 能够说出如何使用 while 和 for 循环来遍历元组中的元素
- 能够说出元组支持哪些操作
- 能够说出如何定义一个字典
- 能够说出字典和列表的区别
- 能够说出如何使用 for 循环来遍历列表中的键、值和键值对
- 能够说出字典键和值的特点
字符串介绍
一. 认识字符串
字符串是 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
- 语法
字符串序列.find(子串, 开始位置下标, 结束位置下标)
- 示例
mystr.find(str, start=0, end=len(mystr))
<2>index2>
跟find()方法一样,只不过如果str不在 mystr中会报一个异常.
- 语法
字符串序列.index(子串, 开始位置下标, 结束位置下标)
- 示例
mystr.index(str, start=0, end=len(mystr))
<3>count3>
返回 str在start和end之间 在 mystr里面出现的次数
- 语法
字符串序列.count(子串, 开始位置下标, 结束位置下标)
- 示例
mystr.count(str, start=0, end=len(mystr))
<4>replace4>
把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.
- 语法
字符串序列.replace(旧子串, 新子串, 替换次数)
- 示例
mystr.replace(str1, str2, mystr.count(str1))
<5>split5>
以 str 为分隔符切片 mystr,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串
- 语法
字符串序列.split(分割字符, num)
- 示例
mystr.split(str=" ", 2)
<6>capitalize6>
把字符串的第一个字符大写
mystr.capitalize()
<7>title7>
把字符串的每个单词首字母大写
>>> a = "hello itcast"
>>> a.title()
'Hello Itcast'
<8>startswith8>
检查字符串是否是以 hello 开头, 是则返回 True,否则返回 False
- 语法
字符串序列.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,构造出一个新的字符串
- 语法
字符或子串.join(多字符串组成的序列)
- 示例
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