python基础练习题(代码题+概念题)

python基础练习题

代码题

  1. 输入一个字符串,把字符串拆分成两个等分
    ■ 如果字符串长度是偶数,前一半和后一 半的长度是相同的
    ■ 如果字符串长度是奇数,则多出的一个 字符加到前一半,如:‘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)
  1. ▪ 输入一个字符串,返回满足以下条件字符串
    ■ 找到字符串中的子串 ‘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’

  1. ▪ 判断回文
    ■ 输入一个数字,如果是回文数字,返回 True,否则 返回False
    ■ 提示:回文:62426是回文数字
str=input()
if str==str[::-1]:#字符串扩展切片
    print("True")
else:
    print("Flase")
  1. ▪ 输入一个字符串返回满足以下条件的字符串
    ■ 找出与字符串的第一个字母相同的字母, 把它们替换成 ‘*’,除了第一个字母本身以外
    ■ 例如: 输入’babble’, 返回 'ba**le’
str =input()
first =str[0]
str_new =str[0]+str[1:].replace(first,'*')
print(str_new)
  1. 输入字符串 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
  1. 任意输入两个整数,输出一个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. (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)))

利用了集合里不会出现重复元素的特性获取元素列表

  1. 如何根据两个列表创建一一对应的字典
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等函数组合使用

  1. 如何给字典排序
    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=…决定排序是升序还是降序,不写默认按升序排。

概念题

  1. python的数据结构有几种,分别有什么特点;字典的键有什么要求?
    序列(字符串,列表,元组):字符串,元组为不可变类型
    映射(字典):一个键不能对应多个值,键必须是可哈希的(不可变)
    集合:没有特别语法格式,只能用set()和frozenset()创建。没有重复元素,相当于一个物品清单

  1. pyhton的修饰符
    修饰符“@”后面必须是之前定义的某一个函数。再次调用这个被修饰的函数时,运行过程实际上是将被修饰的函数作为变量带入@xxx这个修饰函数里运行
    如果修饰器(@xxx)是带参数的:@xxx(xx),调用时会先计算@xxx(xx),返回的对象作为新的装饰器来带入被修饰的函数

  1. python中实例方法,类方法,静态方法的区别
    实例方法只能被实例对象调用,而静态方法(由@staticmethod装饰的方法)和类方法(由@classmethod装饰的方法),可以被类或类的实例对象调用。
    实例方法,第一个参数必须要默认传实例对象,一般习惯用self。
    静态方法,参数没有要求。
    类方法,第一个参数必须要默认传类,一般习惯用cls。
    静态方法和类方法更清晰的区分如下:
    在这里插入图片描述

  1. 介绍http
    HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol)
    HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值