一、逻辑推理练习
1、在不运行下面程序的前提下,说出答案。1. 4.0 == 4
2. "4.0" == 4
3. bool("1")
4. bool("0")
5. str(32)
6. int(6.26)
7. float(32)
8. float("3.21")
9. int("434")
10. int("3.42")
11. bool(-1)
12. bool("")
13. bool(0)
14. "wrqq" > "acd"
15. "ttt" == "ttt "
16. "sd"*3
17. "wer" + "2322"
答案如下:
1. True
2. False
3. True
4. True
5. '32'
6. 6
7. 32.0
8. 3.21
9. 434
10. 会报错
11. True
12. False
13. False
14. True
15. False
16. "sdsdsd"
17. 'wer2322'
对以上答案有所困惑,不妨看看下面对一些知识点的讲解:
(1)bool函数转换规则
bool函数进行转换时,其结果取决于传入参数与True和False的等价关系,只需记住一点即可。0,空字符串,None在条件判断语句中等价于False,其他数值都等价于True,bool函数在做数据类型转换时遵循该原则
(2)int("3.42")为什么会报错
字符串"3.42"可以转成foat类型数据3.42,3.42可以转成int类型数据3,但是字符串"3.42"却不可以直接使用int函数转成3,讲实话,我也觉得这个函数有些不灵活,或许是语言的发明老有自己的考虑吧,咱们对这种问题,不必深究,先做到知道它是什么,将来再去研究为什么
(3)字符串大小比较规则
两个字符串在比较大小时,比的不是长度,而是内容
字符串左对齐后,逐个字符依次比较,直到可以分出胜负
(4) "sd"*3
''sd"*3 的意思是sd重复3次,生成一个新的字符串
2、请根据下列题目编写代码
1. 3的5次⽅
2. 7对2求模
3. 9除5,要求有⼩数部分
4. 9除5,要求没有⼩数部分
5. ⽤程序计算根号16,也就是16的2分之⼀次⽅
答案如下:
1. 3**5
2. 7%2
3. 9/5
4. 9//5
5. import math
math.sqrt(16)
知识点:
(1).幂运算用两个 " * " ,2的2次方表示为2**2;
(2).求模运算用%,其实就是求余数;
(3).除法中,希望结果有小数部分时用 ' / ',希望只保留整数部分时用 ' // ';
(4).开根号,要用到 math 模块的 sqrt() 方法,这个题目需要你自己去百度或是谷歌,第一次明
确的建议你,一定要好好利用搜索引擎,不会用搜索引擎的程序员,永远是菜鸟。
二、字符串练习
1、编写程序完成下列问题:
1.将字符串"abcd" 转成大写
2.计算字符串“cd"在 字符串"abcd"中出现的位置
3.字符串“a,b,c,d",请用逗号分割字符串,分割后的结果是什么类型的?
4."{name}喜欢{fruit}".format(name="李雷")"执行会出错,请修改代码让其正确执行
5.string ="Python is good",请将字符串里的Python替换成 python,并输出替换后的结果
6.有一个字符串 string ="python修炼第一期.html",请写程序从这个字符串里获得.html
前面的部分,要用尽可能多的方式来做这个事情
7.如何获取字符串的长度?
8."this is a book",请将字符串里的book替换成apple
9. "this is a book",请用程序判断该字符串是否以this开头
10."this is a book",请用程序判断该字符串是否以apple结尾
11. "This lS a book",请将字符串里的大写字符转成小写字符
12. "This lS a book",请将字符串里的小写字符,转成大写字符
13."this is a book\n",字符串的末尾有一个回车符,请将其删除
答案如下:
1. "abcd".upper()
2. "abcd".find('cd')
3. "a,b,c,d".split(',')
4. "{name}喜欢{fruit}".format(name="李雷", fruit='苹果')
5. string.replace('Python', 'python')
6. string[0:string.find('.html')] 或者string[0:-5]
7. 使⽤len函数
8. "this is a book".replace('book', 'apple')
9. "this is a book".startswith('this')
10. "this is a book".endswith('apple')
11. "This IS a book".lower()
12. "This IS a book".upper()
13. "this is a book\n".strip()
至于最终答案,希望大家自己去实践以下,加深对各个函数用法的印象。
2、字符串的逻辑推理练习
请回答下列问题:
string ="Python is good" #字符串的长度为14,正数0~13,倒数-1~-14
1. string[1:20]
2. string[20]
3. string[3:-4]
4. string[-10:-3]
5. string.lower()
6. string.replace("o","0")
7. string.startswith('python')
8. string.split()
9. len(string)
10.string[30]
11. string.replace(" ",")
答案如下:
1. 'ython is good'
2. 报错
3. 'hon is '
4. 'on is g'
5. 'python is good'
6. 'Pyth0n is g00d'
7. False
8. ['Python', 'is', 'good']
9. 14
10. 报错
11. 'Pythonisgood'
提示:
第2题和第10题都报错,是因为超出了索引范围,字符串长度为14,你去20和30的位置取
值,当然会报错
知识点:
关于切片操作,只需要知道从哪里开始到哪里结束就一定能推导出答案,以string[3:-4]为例,3是开始的位置,-4是结束的位置,但这个范围是左闭右开的,从3开始没错,但不会到-4,而是到-5,更前面的一个位置,python支持负数索引,或者说是反向索引,从右向左从-1开始逐渐减小。
第一题中,做切片的时候是从1开始,到20结束,即便是右开,直到19,也仍然超出了索引范围,为什么不报错呢,这就是语言设计者自己的想法了,切片时,不论是开始位置还是结束位置,超出索引范围都不会报错,由于切片是一个范围操作,这个范围内有值就切出来,没值返回空字符串就好了。
3、列表与元组
(1).列表基础练习
lst = [1,2,3,4,5]
1.求列表的长度
2.判断6 是否在列表中
3.lst +[6,7,8]的结果是什么?
4.lst*2 的结果是什么
5.列表里元素的最大值是多少
6.列表里元素的最小值是多少
7.列表里所有元素的和是多少
8.在索引1的后面新增一个的元素10
9.在列表的末尾新增一个元素20
答案:
1. len(lst)
2. 6 in lst
3. [1,2,3,4,5,6,7,8]
4. [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
5. max(lst)
6. min(lst)
7. sum(lst)
8. lst.insert(1,10)
9. lst.append(20)
(2).元组基础练习
写出下面代码的执行结果和最终结果的类型
1.(1, 2)*2
2.(1, )*2
3.(1)*2
答案:
1. (1, 2, 1, 2)
2. (1, 1)
3. 2
第2题和第3题,元组里只有一个数据时,必须有逗号,如果没有逗号,就变成了第3题的形式,第3题本质上是1*2,那对小括号就如同我们小学学过的小括号一样,只是为了体现运算优先级而已,当元组只有一个数据时,如果不省略了逗号,那么小括号的作用就不再是表示元组,而是表示运算优先级。
(3).列表合并
lst = [1,2,3]
lst2 = [4,5,6]
不使用 +号运算符,将lst2合并到lst的末尾,并思考,这个过程中,是否产生了新的列表
答案:
lst.extend(lst2)
这个过程中不会产生新的列表,最直观的检验方式就是print(id(lst)),合并前后,lst的内存地址都没有发生变化,只是列表里的内容发生了变化。
(4).统计练习
lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
1.找出列表里的最大值
2.找出列表里的最小值
3.找出列表里最大值的个数
4.计算列表里所有元素的和
5.计算列表里元素的平均值
6.计算列表的长度
7.找出元素6在列表中的索引
答案:
1. max(lst)
2. min(lst)
3. lst.count(max(lst))
4. sum(lst)
5. sum(lst)/float(len(lst))
6. len(lst)
7. lst.index(6)
标签:10,string,Python,练习,数据类型,列表,lst,book,字符串
From: https://blog.csdn.net/dragon__chen1078/article/details/141058773