python基础练习题(代码题+概念题)
python基础练习题
代码题
- 输入一个字符串,把字符串拆分成两个等分
■ 如果字符串长度是偶数,前一半和后一 半的长度是相同的
■ 如果字符串长度是奇数,则多出的一个 字符加到前一半,如:‘abcde’,前一半 是’abc’,后一半是’de’
str =input()
a =len(str)
if a%2 ==0:
a =a//2
str1 =str[:a]
str2 =str[a:]
print(str1,str2)
else:
a=a//2
str1 =str[:a+1]
str2 =str[a+1:]
print(str1,str2)
- ▪ 输入一个字符串,返回满足以下条件字符串
■ 找到字符串中的子串 ‘not’ 和 'bad’
■ 如果 ‘bad’ 出现在 ‘not’ 后面,就把 ‘not’ … ‘bad’ 之间包含的所有字符串替换成 ‘good’
str =input()
a =str.find('not')
b =str.find('bad')
print(str[a:a+3],str[b:b+3])
if b>a:
str=str[:a+3]+'good'+str[b:]
print(str)
注意:find方法返回的是字符串中符合部分的第一位,如’012ab’中查找’ab’,返回的即是’3’
- ▪ 判断回文
■ 输入一个数字,如果是回文数字,返回 True,否则 返回False
■ 提示:回文:62426是回文数字
str=input()
if str==str[::-1]:#字符串扩展切片
print("True")
else:
print("Flase")
- ▪ 输入一个字符串返回满足以下条件的字符串
■ 找出与字符串的第一个字母相同的字母, 把它们替换成 ‘*’,除了第一个字母本身以外
■ 例如: 输入’babble’, 返回 'ba**le’
str =input()
first =str[0]
str_new =str[0]+str[1:].replace(first,'*')
print(str_new)
- 输入字符串 a 和 b,返回添加以下条件的字符串
■ 交换两个字符串的最前面的两个字母
■ 使用空格把两个字符串分隔后合并成一个字符串
■ 字符串 a 和 b 的长度都大等于2
a =input()
b =input()
if len(a)&len(b)>=2:
c =a.replace(a[:2],b[:2])
d =b.replace(b[:2],a[:2])
together =c+' '+d
print(together)
else:
pass
- 任意输入两个整数,输出一个10项的斐波那契数列(Fibonacci序列是一个整数序列,其特征在于前两个之后的每个数字是前两个数字的总和)
a =int(input())
b =int(input())
fibonacci =[a,b]
for i in range(0,8):
c =(fibonacci[i]+fibonacci[i+1])
fibonacci.append(c)
print(fibonacci)
注意,这里list.append()的用法和字符串的替换不同,str.replace()字符串替换不会改变字符串本身的值,这个内置函数可以直接改变列表本身的值,再赋值反而会把列表变为None
- (1)统计一个列表中每个元素出现的次数
list1 =[1,1,2,2,2,3,4,5,6]
for i in set(list1):
print(i,list1.count(i))
(2)列表去重
list1 =[1,1,2,2,2,3,4,5,6]
print(list(set(list1)))
利用了集合里不会出现重复元素的特性获取元素列表
- 如何根据两个列表创建一一对应的字典
name =['a','b','c','d','e']
number =[1,2,3,4,5]
zip1 =list(zip(name,number))
dict1 =dict(zip1)
print(dict1)
这里的zip为打包函数,list(zip(name,number))
返回的值是[('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)]
注意:zip本身返回的值并不是一个元组,需要和list等函数组合使用
- 如何给字典排序
dict1 ={'a':1,'c':2,'b':3}
按key值排序:sorted(dict1.items(),key=lambda e:e[0],reverse=False)
结果:[(‘a’, 1), (‘b’, 3), (‘c’, 2)]
按value值排序:result =sorted(dict1.items(),key=lambda e:e[1],reverse=False)
结果:[(‘a’, 1), (‘c’, 2), (‘b’, 3)]
直接对key或value进行排序,则只需要sorted(dict1.keys())
或sorted(dict1.values())
结果:[‘a’, ‘b’, ‘c’]或[1, 2, 3]
注意:
虽然dict1.items()这类函数返回的值是dict_items([(‘a’, 1), (‘c’, 2), (‘b’, 3)]),不是单纯的列表,但依然可以用sorted来进行排序。这些看起来有些恼人的前缀想要消除也很简单,在外面套一个list函数即可。
注意:
字典本身是无序的,不能排序。所谓的排序都是基于由字典转换成的列表来进行的,即便这里被排序的对象写的是dict1,实际上被排序的也是dict1里元素的第一个值key组成的列表。
sorted(xxx,key = …,reverse =True/False) 函数中:
xxx是需要进行排序的对象;
key =…是排序的依据,如:lambda e:e[0]表示被排序对象中的任意元素(为元组形式)的第0项,在这里即是key的值,即根据key的值来排序。如果不需要指定排序依据,也可以不写,默认按元素第一个值来排;
reverse=…决定排序是升序还是降序,不写默认按升序排。
概念题
- python的数据结构有几种,分别有什么特点;字典的键有什么要求?
序列(字符串,列表,元组):字符串,元组为不可变类型
映射(字典):一个键不能对应多个值,键必须是可哈希的(不可变)
集合:没有特别语法格式,只能用set()和frozenset()创建。没有重复元素,相当于一个物品清单
- pyhton的修饰符
修饰符“@”后面必须是之前定义的某一个函数。再次调用这个被修饰的函数时,运行过程实际上是将被修饰的函数作为变量带入@xxx这个修饰函数里运行
如果修饰器(@xxx)是带参数的:@xxx(xx),调用时会先计算@xxx(xx),返回的对象作为新的装饰器来带入被修饰的函数
- python中实例方法,类方法,静态方法的区别
实例方法只能被实例对象调用,而静态方法(由@staticmethod装饰的方法)和类方法(由@classmethod装饰的方法),可以被类或类的实例对象调用。
实例方法,第一个参数必须要默认传实例对象,一般习惯用self。
静态方法,参数没有要求。
类方法,第一个参数必须要默认传类,一般习惯用cls。
静态方法和类方法更清晰的区分如下:
- 介绍http
HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol)
HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具