内容正文:
镇雄长风中学 杨鹏
第三章 算法的程序实现
必修1《数据与计算》
3.2.4 基本数据结构
1
Python字符串索引、切片
1
2
学习目标
Python列表索引、切片
3
Python字典索引
复习:算法三要素
复习
算法
三要素
基础数据类型
int(整型)
Bool(布尔型)
str(字符串型)
list(列表)
tuple(元组)
set(集合)
dict(字典)
float(实型)
ture
false
99
99.99
“Python”
[‘Python’,“编程”]
{ “编程”: ‘Python’,}
(0,1,2,3)
{10,20,30}
算法
数据
控制
转移
复习:Python基本数据类型
必修一:数据与计算
Python算术运算符
运算符 表达式 描述 示例 优先级
** x**y 求x的y次幂 5**2结果为25 1
* x*y 将x与y相乘 5*2结果为10 2
/ x/y 用x除以y,产生的实数 5/2结果为2.5 2
// x//y 用x除以y,取整数部分 5//2结果为2 2
% x%y 用x除以y,取余数 5%2结果为1 2
+ x+y 将x与y相加 5+2结果为7 3
- x-y 将x减去y 5-2结果为3 3
复习
算术运算符优先级为是:先算括号,其次,按顺序从1-2-3。
必修一:数据与计算
运算符 表达式 描述 示例 优先级
> x>y 大于 - 返回x是否大于y 5>2结果为True 1
< x<y 小于 - 返回x是否小于y。 5<2结果为False 1
>= x>=y 大于等于 - 返回x是否大于等于y。 5>=2结果为True 1
<= x<=y 小于等于 - 返回x是否小于等于y。 5<=2结果为False 1
== x==y 等于 - 比较对象是否相等 5==2结果为False 2
!= x!=y 不等于 - 比较两个对象是否不相等 5!=2结果为True 2
in 如果在指定的序列中有找到值返回True,否则返回 False。 x in y,x在y序列中返回 True。
not in 如果在指定的序列中没有找到值返回True,否则返回 False。 x not in y,如果x不在y序列中返回 True
Python关系运算符
复习
关系运算符优先级为是:先算括号,其次,按顺序从1-2。
必修一:数据与计算
运算符 表达式 描述 示例
not not x 与 not False 结果为True
and x and y 或 True and False 结果为False
or x or y 非 True or False 结果为True
Python逻辑运算符
逻辑运算符优先级为是:先算括号,其次,not>and>or
复习
必修一:数据与计算
有如下程序段:
该程序第4行、第5行和第6行代码的含义是什么?
#把 3 赋值给变量 a
#把 4 赋值给变量 b
#把 5 赋值给变量 c
# ?
# ?
# ?
#输出变量 a 的值
#输出变量 c 的值
1 a = 3
2 b = 4
3 c = 5
4 a *= b
5 a%= c
6 c //= b
7 print(a)
8 print(c)
3.2.1 Python语言基础
必修一:数据与计算
运算符 描述 实例
= 简单赋值运算符 c = a + b, 将 a + b 的运算结果赋值给 c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 取模赋值运算符 c %= a 等效于 c = c % a
//= 取整除赋值运算符 c //= a 等效于 c = c // a
**= 幂赋值运算符 c **= a 等效于 c = c ** a
Python赋值运算符
3.2.1 Python语言基础
必修一:数据与计算
有如下python程序段:
该程序第4行、第5行和第6行代码的含义是什么?
#把 3 赋值给变量 a
#把 4 赋值给变量 b
#把 5 赋值给变量 c
#把 a*b 后赋值给变量 a
#把 a 和 c 取余后赋值给变量 a
#把 c 和 b 取整后赋值给变量 a
#输出变量 a 的值
#输出变量 c 的值
1 a = 3
2 b = 4
3 c = 5
4 a *= b
5 a%= c
6 c //= b
7 print(a)
8 print(c)
3.2.1 Python语言基础
必修一:数据与计算
有如下python程序段:
该程序运行后,变量a、b、c的值分别是( )
A. 3,4,5 B. 12 , 4,5
C. 12,4 , 1 D. 2,4 , 1
1 a = 3
2 b = 4
3 c = 5
4 a *= b
5 a%= c
6 c //= b
7 print(a , b , c)
3.2.1 Python语言基础
D
3×4=12
12 % 5=2 此时a的值为2
5 // 4=1 此时c的值为1
必修一:数据与计算
1、(12分)假设有一张足够大的纸,厚度不超过0.1毫米,对折一次纸的厚度增加一倍,折叠多次后可以超过世界屋脊珠穆朗玛峰的高度8848米。(提示:纸的厚度单位是毫米,珠峰的度单位是米)
(1)程序中变量d的数据类型是________________________。
(2)程序中第4行划线处应填入________________________。
(3)与程序第6行h*=2代码功能一样的是________________。(选填“h=h+2”或“h=h*2)
1 d = float(input('请输入纸的厚度mm:'))
2 h = d /1000
3 n =0
4 while_________________:
5 n +=1
6 h*=2
7 print("厚度为",d,"毫米的纸折叠",n,"次后高度达到",h,"米")
float
h<=8848
h=h*2
练一练(2022年秋季学期学业水平考试第 26 题)
(也可以填实型,浮点型)
必修一:数据与计算
问题描述 Python语言表达式
数学中的代数式
将两个字符串“加油!”和“中国”连成一个字符串
7.9
判断整数 x能被 整数 y 整除
判断整数x是否奇数或者偶数
python语言表达式
(b**2+4*a*c)/(2*b)
>= 7.9 and < 11.2
"加油!"+"中国"
x%y==0
x%2==1 奇数
x%2==0 偶数
< -11.2 or >= 7.9
3.2.1 Python语言基础
必修一:数据与计算
练一练
1、在python中,判断一个数 x 能被7整除的表达式是( )
A. x==7
B. x!=7
C. x %7==0
D. x//7==0
C
必修一:数据与计算
练一练
2、判断x是否在区间[a,b]上,正确的数学表达式和逻辑表达式是( )
A. x ≥ a 或 x ≤b ,a <= x or x <= b
B. a≤x≤b , x≥a and x≤b
C. a≤x≤b , x≥a or x≤b
D. a≤x≤b , x >= a and x <= b
D
必修一:数据与计算
练一练
3、与数学表达式 对应的python表达式中正确的是( )
A. 2(c+d)/a+b
B. (2*(c+d) )/(a+b)
C. 2*c+d/a+b
D. 2*(c+d)/a+b
B
2(c+d)
a+b
必修一:数据与计算
Python 基本数据结构
3.2.1 Python语言基础
必修一:数据与计算
字符串的定义:单引号(‘ ’)、双引号(“”) 或三引号(‘”“’)括起来的一串字符,空格和标点符号也属于字符。和字符串相关函数有str()、len()、ord()和chr()。
字符串转换:str() (见page80表3.2.5python常见内建函数)
字符串长度计算:len()
ASCII码转换: ord() 和 chr()
例如:str(3.14)
12
L
例如:len(‘Hello,world!’ )
例如:ord(A)
例如:chr(97)
“3.14”
65
“a”
3.2.1 Python语言基础
3.2.4 Python基本数据结构----字符串
必修一:数据与计算
已知列表str1=“hello!”,则python表达式
Len(str1)+ord(A)的值为:( )
A. 6
B. 7
C. 65
D. 71
D
练一练
解析:
len(str1)是计算字符串str1的字符个数,即len(str1) 的值6。
ord(0)是计算字符“A”的十进制ASCII 值是65。
则, Len(str1)+ord(A)==71
必修一:数据与计算
保存字符串时,将所有字符依次存入字符串所在的空间,并且按照顺序将元素依次存放,为了方便存取数据,我们将元素进行编号,从0开始依次递增通过下标索引可以获取元素或者切片等操作。
字符串的索引,正数索引从0开始,从左至右依次递减;负数索引从-1开始,从右至左依次递减。
3.2.1 Python语言基础
语法:str_name [ index ]
字符串名称 [ 索引标号 ]
正数索引
0
1
2
……
n-2
n-1
负数索引
-n
-(n-1)
-(n-2)
……
-2
-1
Python基本数据结构----字符串索引(index)
必修一:数据与计算
1 str1=“dictionary”
2 print(str1[ -8 ])
1 str1=“dictionary”
2 print(str1[ 2 ])
0
-1
2
str1=‘dictionary’
正数索引下标从0开始。
字符串的索引,正数索引从0开始,从左至右依次递减,负数索引,从-1开始从右至左依次递减。例如:
正数索引
d i c t i o n a r y
0 1 2 3 4 5 6 7 8 9
d i c t i o n a r y
-10 -9 -8 -7 -6 5- -4 -3 -2 -1
3.2.1 Python语言基础
负数索引
-8
语法: 字符串名称[ 索引标号(index) ]
Python基本数据结构----字符串索引(index)
下列python程序:
运行结果:C
运行结果:C
负数索引下标从-1开始。
必修一:数据与计算
Python 中的字符串切片是一种从字符串中提取子字符串的常用方法。切片操作使用方括号 [ ] 来执行,并可以包括起始索引、结束索引和步长。
以下是字符串切片的基本用法和一些示例。若要访问多个字符或者元素,可以使用“:”号间隔的而两个参数来实现。
Start(初值) 是切片的起始索引(包含),如果省略则默认从字符串开头开始。
Python基本数据结构----字符串切片
3.2.1 Python语言基础
语法: str_name[ start : end : step ]
初值
终值
步长
end (终值) 是切片的结束索引(不包含),如果省略则默认到字符串末尾。
Step(步长) 表示每隔多少个字符取一个字符,如果省略则默认为 1。
字符串名称
必修一:数据与计算
有如下列Python代码,运行后结果是:
该实例中, info[3:5]表示从索引为 3 的字符(第4个字符“l”)开始取,一直取到索引为5的字符(即第6个字符----空格,但不包含第6个字符),得到字符串“lo”。
运行结果:
”lo ”
3.2.1 Python语言基础
0 1 2 3 4 5 6 7 8 9 10 11
正向索引
index
字符串
正数索引,从左到右,第一个元素索引为0。
1 info=“hello,world!”
2 info[3 : 5]
3 print(info)
He l lo,worl d!
必修一:数据与计算
【变式例子】 对变量list_1 = “Hello ,World!”中的“World”切片,请问输出“World”的代码应该如何写( )
A. list_1 = ‘World’
B. list_1[6:11]
C. print(list_1)
D. print(list_1[6:11])
D
要输出变量s = “Hello World!”中的“World”,请问代码应该如何写______________________________。
print(s[6:11])
练一练
必修一:数据与计算
十八位居民身份证号码由六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码组成(其中倒数第二位是性别代码,男单女双),其格式如图,请编程识别身份证号码中所包含的出生日期和性别信息,输出格式如下:您的出生日期为:xxxx年xx月xx日,性别为x。
思考与练习(page95第3题)
性别为男:int(s[16])%2==1
性别为女:int(s[16])%2==0
年:s[6:10]
月:s[10:12]
日:s[12:14]
获取身份证号码:
s=input(“请输入18位身份证号码:”)
性别:s[16]
XXXXXXXXXXXXXXXXXX
索引 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
必修一:数据与计算
十八位居民身份证号码由六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码组成(其中倒数第二位是性别代码,男单女双),其格式如图,请编程识别身份证号码中所包含的出生日期和性别信息,输出格式如下:您的出生日期为:xxxx年xx月xx日,性别为x。
思考与练习(page95第3题)
1 s = str( input( “请输入十八位身份证号码:”))
2 if int (s[16])%2==1”:
3 xb=“男”
4 else:
5 xb=“女”
6 print( “您的出生日期为:”,s[6:10],“年”,s[10:12],“月”, s[12:14],“日”,“性别为:”,xb )
Python代码如下:
必修一:数据与计算
(12分)在中国的传统文化中,兔子一直是一个非常受欢迎的形象,代表着光明和美好。2023年是兔年,小黄想设计一个程序,根据身份证号码统计全校属兔的学生人数。通过上网查阅资料,小黄了解到居民身份证号码由六位数字地址码、八位数字出生日期码、三位数字顺序码和一位校验码组成。
(1)根据学生的身份证号码判断生肖。方法是:18位身份证号码中的第7位至第10位表示出生年份,用年份除以12取余数,根据下面余数与生肖的对应关系判断生肖。
他编写了一个判断生肖的函数,其Python程序代码如下,程序中第3行下划线处应填入。
实例(2023年春季学期学业水平考试第26题)
生肖 鼠 牛 虎 兔 龙 蛇 马 羊 猴 鸡 狗 猪
余数 4 5 6 7 8 9 10 11 0 1 2 3
1 def sx(ID)
2 sxzuhe=[猴","鸡","狗","猪”,"鼠","牛","虎","兔","龙","蛇",“马","羊"]
3 year=int(ID[___________]) #读出身份证号码7~10位字符并转化为整数后赋值给变量year
4 index=year%12
5 return sxzuhe[index
6 : 10
必修一:数据与计算
1、下列python程序的运行的结果是( )
A. 我
B. 和
C. 的
D. 国
练一练
我 和 我 的 祖 国
索引标号 0 1 2 3 4 5
C
1 str1=“我和我的祖国”
2 print(str1[3])
必修一:数据与计算
2、一个3位正整数,每位上的数字的3次幂之和等于它本身,这类数称为水仙花数。小芸编写Python 程序输出100至999之间的所有水仙花数,代码如下(图1):
程序调试时报错(图2),请分析程序出错的原因( )
A. 第 2 行不能使用str()函数把变量 i 的值转换为字符串类型
B. 第 6 行的幂运算不能使用 ** 运算符,应该使用 * 运算符
C. 第 6 行的 bai、shi、ge三个变量是字符串类型,不能进行幂运算
D. 第 7 行输出格式错误,应该使用双引号
>>> %Run '水仙花数.py‘
Traceback(most recent call last):
File "D:\KINGSTON\123\水仙花数.py",line 6,in <module>
if int(s)==bai**3+shi**3+ge**3:
Typeerror: unsupported operand type(s) for ** or pow(): ‘str’ and ‘int’
1 for i in range(100,1000):
2 s=str( i )
3 bai=s[ 0 ]
4 shi=s[ 1 ]
5 ge=s[ 2 ]
6 if int(s)==bai**3+shi**3+ge**3:
7 print( i , "是水仙花数")
C
练一练(2023年秋季学期学业水平考试第10题)
图1
图2
#截取第1个字符
#截取第2个字符
#截取第3个字符
必修一:数据与计算
本节课到此结束
$