Python基础练习题及答案,别再为小细节头疼了!

最近在图像识别过程中遇到基础代码读不懂的问题,发现自己Python基础真差,于是就来刷一刷基础题目。虽然练习的操作内容和图像识别无关,但其中碰到的一些小问题以及报错内容在日常代码中会遇到,下次就可以直接自己改,而不用再傻傻寻找帮助了,我认为练习一下也是有帮助的,原题来自吐血整理 python最全习题100道(含答案)持续更新题目,建议收藏!,我自己练了2遍,对一些地方加了修改,欢迎大家提出修改。

字符串问题

  1. 已知一个字符串为 “hello_world_yoyo”,如何得到一个队列[“hello”,“world”,“yoyo”]

使用split()函数将字符串转化为列表

str1="hello_world_yoyo"
strlist=str1.split("_")
print(strlist)
  1. 有个列表[‘hello’, ‘world’,
    ‘yoyo’]如何把把列表里面的字符串联起来,得到字符串"hello_world_yoyo"

使用join函数将列表转化为字符串:string_name.join(iterable)

strlist=['hello', 'world', 'yoyo']
str="_".join(strlist)
print(str)

3.输入: “We are happy”
输出:“We%20are%20happy.”
replace()函数实现字符串的替换

str1="We are happy"
print(str1.replace(" ","%"))

4.找出单词"welcome"在 字符串"Hello,welcome to my world" 中出现的位置,找不到返回-1
find()函数只会输出第一个被找到的索引位置,从0开始

str="Hello,welcome to my world"
print(str.find("welcome"))

5.#统计字符串"Hello,welcome to my world" 中字母w出现的次数和单词 my 出现的次数
count()函数

str="Hello,welcome to my world"
print(str.count("w"),str.count("my"))

6.输入一个字符串str, 输出第m个只出现过n次的字符,如在字符串" gbgkkdehh "中,找出第2个只出现1 次的字符,输出结果:d

str1=" gbgkkdehh "
zifu=[]
def findtext(m,n):
    for i in str1:
        if str1.count(i)==n:
            zifu.append(i)
    return zifu[m-1]
print(findtext(2,1))

7.判断字符串a=="Hello,welcome to my world"是否包含单词b=“world”,包含返回True,不包含返回 False

str1="Hello,welcome to my world"
b="world"
res=str1.find(b)
if res==-1:
    print('False')
else:
    print('True')

8.输出指定字符串A在字符串B中最后出现的位置,从 0 开始计数,没出现就输出-1
rfind函数的用法:rfind()函数用于返回字符串最后一次出现的位置(从右向左查询)

A="hello"
B="hi how are you hello world, hello yoyo !"
print(B.rfind(A)

9.#将字符串a="This is string example….wow!"全部转成大写或者小写
upper()和lower()函数转换成大小写

a="This is string example….wow!"
print(a.upper())
print(a.lower())

10.#将字符串 a =" Hello,welcome to my world "首尾空格去掉
strip()去掉首位空格,lstrip()去掉首空格,rstrip()去掉尾空格

a =" Hello,welcome to my world "
a.strip()

11.s=“ajldjlajfdljfddd”,去重并从小到大排序输出”adfjl”
set() 函数创建无序不重复元素集,可用于去除

s="ajldjlajfdljfddd"
sset=sorted(set(s))
#sorted默认升序,降序加入reverse = True
str1sset="".join(sset)
print(str1sset)

列表问题

1.如果有一个列表a=[1,3,5,7,11],反转成[11,7,5,3,1],取到奇数位值的数字,如[1,5,11]
[::-1]倒序输出

a=[1,3,5,7,11]
b=a[::-1]
jishu=[a[i] for i in range(0,len(a),2)]
print(b,jishu)

2.对列表a 中的数字从小到大排序

a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 7, 8]
print(sorted(a))

3.找出列表中最大值和最小值
max()和min()

L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88]
print(max(L1),min(L1))

4.找出列表中单词最长的一个

a=["hello","world","yoyo","congratulations"]
lo=""
for i in a:
    if len(i)>len(lo):
        lo=i
print(lo)

5.取出列表中最大的三个值

L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88]
print(sorted(L1,reverse=True)[:3])

6.a = [1, -6, 2, -5, 9, 4, 20, -3] ,按列表中的数字绝对值从小到大排序

abslist=[]
for i in range(0,len(a)):
    abslist.append(abs(a[i]))
abslist=sorted(abslist)
for i in range(0,len(a)):
    if abslist[i] not in a:
        abslist[i]=-abslist[i]
print(abslist)

6.L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88],一行代码得出[1, 2, 3, 5, 11, 33, 88]

L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88]
print(sorted(set(L1)))

7.将列表中的重复值取出(仅保留第一个),要求保留原始列表顺序
#a=[3, 2, 1, 4, 2, 6, 1] 输出[3, 2, 1, 4, 6]

a=[3, 2, 1, 4, 2, 6, 1] 
c=[]
for i in a:
    if i not in c:
        c.append(i)
print(c)

8.a = [1, 3, 5, 7],b=[“a”,“c”,“d”]#如何得到[1, 3, 5, 7,“a”,c",“d”]
列表可以直接进行叠加

a = [1, 3, 5, 7]
b=["a","c","d"]
print(a+b)

9.用一行代码生成一个包含 1-10 之间所有偶数的列表
列表推导式

print([i for i in range(0,11,2)])

10.列表a = [1,2,3,4,5], 计算列表成员的平方数,得到[1,4,9,16,25]

print([i**2 for i in a])

11.使用列表推导式,将列表中a = [1, 3, -3, 4, -2, 8, -7, 6]找出大于0的数

a = [1, 3, -3, 4, -2, 8, -7, 6]
print([i for i in a if i>0])

11.统计在一个队列中的数字,有多少个正数,多少个负数

a=[1, 3, 5, 7, 0, -1, -9, -4, -5, 8]
print(len([i for i in a if i>0]))

12.a = [“张三”,”张四”,”张五”,”王二”] 如何删除姓张的

a=["张三","张五","王二","思思"]
b=[]
for i in a:
    if i[0]!="张":
     b.append(i)
print(b)

13.有个列表a = [1, 3, 5, 7, 0, -1, -9, -4, -5, 8] 使用filter 函数过滤出大于0的数
filter(function, iterable),filter只是一个生成器,要显示内容,可以通过list()

a = [1, 3, 5, 7, 0, -1, -9, -4, -5, 8]
def test(a):
    return a < 0

c = filter(test,a)
print(list(c))

14.a=[“张三”,“张五”,“王二”,“思思”],过滤掉姓张的

a=["张三","张五","王二","思思"]
def xing(a):
    if a[0]!="张":
        return a 
print(list(filter(xing,a)))

15.过滤不及格的

a=[{"name":"张三","score":66},{"name":"张二","score":56},{"name":"张要三","score":86}]
def score(a):
    return a["score"]>60
c=filter(score,a)
print(list(c))

16.有个列表 a = [1, 2, 3, 11, 2, 5, 88, 3, 2, 5, 33],找出列表中最大的数,出现的位置,下标从0开始

a = [1, 2, 3, 11, 2, 5, 88, 3, 2, 5, 33]
print(max(a),a.index(max(a)))

17.a=[“my”,“skills”,“are”,“increasing”,“my”,“what”]
找出列表中出现次数最多的元素

a=["my","skills","are","increasing","my","what"]
b=""
count=0
for i in range(0,len(a)):
    if a.count(a[i])>count:
        count=a.count(a[i])
        b=a[i]
print(b)

18.A1=[1,“c”, 2, 33],请返回待查找元素在数组中的位置(从0开始),若不存在该元素,返回-1。
find()在字符串中可以用,但是列表不行
使用try,except

**A1=[1,"c", 2, 33]
def xunzhao(a,b):
 try:
    a.index(b)
    return a.index(b)
 except:
    return -1
print(xunzhao(A1,2))**

给定一个整数数组nums 和一个目标target ,请你在该数组中找出和为目标值的那两个整数,并返回他
们的数组下,如给定nums=[2,7,1,8,11,15],target=9
因为nums[0] + nums[1] =2+7 = 9
所以返回[0, 1]

nums=[2,1,8,7,11,15]
target=9
res=[]
for i in range(0,len(nums)):
    for j in range(i+1,len(nums)):
     if nums[i]+nums[j]==target:
            res.append((nums[i],nums[j]))
print(res)

20.#二维数组取值(矩阵),a = [[“A”, 1], [“B”, 2]],如何取出 2
a = [[“A”, 1], [“B”, 2]]
print(a[1][1])
**
21.列表转字符串,L = [1, 2, 3, 5, 6],如何得出 ‘12356’?
join()

L = [1, 2, 3, 5, 6]
word=[str(i) for i in L]
print("".join(word))

22.现有 nums=[2, 5, 7] ,如何在该数据最后插入一个数字 9 ,如何在2后面插入数字0
append()和insert()

nums=[2, 5, 7]
nums.append(9)
nums.insert(nums.index(2)+1,0)
print(nums)

23.有个列表a = [1, 2, 3, 4, 5, 6, 7, 8, 9],如何打乱列表a的顺序,每次得到一个无序列表

import random
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
random.shuffle(a)
print(a)

24.输出1-100除3余1 的数,结果为tuple

a=(i for i in range(1,101) if i%3==1)
print(tuple(a))

有个列表a = [1, 2, 3, 4] 计算列表中每个数除以2 取出余数 得到 [1,0,1,0]
将列表 [1,2,3,4,5] 使用python方法转变成 [1,4,9,16,25]
列表a=[1,2,3,4],b=[5,6,7,8]相乘得到[2,12,30]
map(function,iterable,…)

a = [1, 2, 3, 4]
c=map(lambda y:y%2,a)
d=map(lambda s:s**2,a)
b=[5,6,7,8]
e=map(lambda x,y:x*y,a,b)
print(list(c))
print(list(d))
print(list(e))

25.a = [2, 3, 8, 4, 9, 5, 6]
b = [2, 5, 6, 10, 17, 11]
1.找出a和b中都包含了的元素
2.a或b中包含的所有元素
3.a中包含而集合b中不包含的元素

a = [2, 3, 8, 4, 9, 5, 6]
b = [2, 5, 6, 10, 17, 11]
print(set(a).union(set(b)))
print(set(a).intersection(set(b)))
print(set(a)-set(b))

有1、2、3、4数字能组成多少互不相同无重复数的三位数?
注意不等的顺序

a=[1,2,3,4]
res=[]
for i in a:
    for j in a:
        for k in a:
            if i!=j&j!=k&k!=i:
                res.append(i*100+10*j+k)
print(res,len(res))

27.a = [11, 2, 33, 1, 5, 88, 3]冒泡排序:

a = [11, 2, 33, 1, 5, 88, 3]
media=[]
for i in range(0,len(a)):
    for k in range(i+1,len(a)):
        if a[i]>a[k]:
            media=a[i]
            a[i]=a[k]
            a[k]=media
print(a)
  1. a = [ {“yoyo1”: “123456”},{“yoyo2”: “123456”}, {“yoyo3”: “123456”}]写入本地一个txt文件
    r只读,w写入(直接覆盖)(指针在文件的开头),换行则需要“\n”
    r+,w+,a+可以用于读写

    a追加,在文档的末尾
a = [
        {"yoyo1": "123456"},
        {"yoyo2": "123456"},
        {"yoyo3": "123456"},
    ]
with open("trytest.txt","w") as f:
 for i in  a:
   for key,value in i.items():
    f.write("{}:{}\n".format(key,value))

字典问题

1.按照列表中的 单词长度输出
字典的排序问题:
**dict1.values(),dict1.keys()返回的是列表,dict1.items()返回的是元组形式的列表
sorted(dict1.items(),key=lambda x:x[1])**对值进行排序,返回元组列表

a=["hello","hellowordld","ge","good"]
c={}
for i in a:
    c[i]=len(i)
c=sorted(c.items(),key=lambda x:x[1])
for i in range(0,len(a)):
    a[i]=c[i][0]
print(a)

2.a = [“a”, “b”, “c”],b = [1, 2, 3],
zip()

a = ["a", "b", "c"]
b = [1, 2, 3]
c={k:v for k,v in zip(a,b)}
print(c)

3.按年龄age从小到大排序people = [
{“name”: “yoyo”, “age”: 20},
{“name”: “admin”, “age”: 28},
{“name”: “zhangsan”, “age”: 25},
]

people = [
   {"name": "yoyo", "age": 20},
   {"name": "admin", "age": 28},
   {"name": "zhangsan", "age": 25},
]
people=sorted(people,key=lambda x:x["age"])
print(people)

4.a={“aa”:11,“bb”:222}把其中的数字转化为字符串

a={"aa":11,"bb":222}
for key,value in a.items():
    a[key]=str(value)
print(a)

5.字典的叠加
update()

a = {"A": 1, "B": 2}
b = {"C": 3, "D": 4}
a.update(b)
print(a)

6.m1={“a”: 1, “b”: 2, “c”: 1},将同样的value的key集合在list里,输出{1:[‘a’,’c’],2:[‘b’]}
字典的赋值dict[value]=[key]

m1={"a": 1, "b": 2, "c": 1}
d={}
for key,value in m1.items():
    print(key,value)
    if value not in d:
        d[value]=[key]
    else:
        d[value].append(key)
print(d)

7.d = {“name”: “zs”, “age”: 18, “city”: “深圳”, “tel”: “1362626627”},字典根据键从小到大排序
sorted(d.items(),key=lambda x:x[0])

d = {"name": "zs", "age": 18, "city": "深圳", "tel": "1362626627"}
d=sorted(d.items(),key=lambda x:x[0])
print(d)

循环语句

1.打印9x9乘法表
\t代表的是制表符,\n代表换行,end=“”指定字符

for i in range(1,10):#注意range的取值范围,左开右闭
    for k in range(1,i+1):
        print("{}x{}={}\t".format(i,k,i*k),end="")#用end指定输出后不再换行
    print()#用于一个循环结束的换行

2.打印图形
在这里插入图片描述

for i in range(0,4):
    geshu=2*i+1
    kongbai=int((7-(2*i+1))/2)
    print(kongbai*" "+geshu*"*"+kongbai*" ")
for i in range(2,-1,-1):
    geshu=2*i+1
    kongbai=int((7-(2*i+1))/2)
    print(kongbai*" "+geshu*"*"+kongbai*" ")

def函数

1.给定一个数a,判断一个数字是否为奇数或偶数

def leibie(num):
    if num%2==0:
        return "偶数"
    else:
        return "奇数"
print(leibie(12))

2.输入一个姓名,判断是否姓王

def xing(str1):
    if str1[0]=="王":
        print("姓王")
    else:
        print("姓王")
xing("王老五")

3.如何判断一个字符串是不是纯数字组成
使用try方法,对报错情况进行处理

def chunshuzi(str1):
    try:
        float(str1)
        return "纯数字"
    except:
        return "非纯数字"
print(chunshuzi("123"))

4.#给一个不多于5位的正整数,求它是几位数,逆序打印出各位数字

def numtype(a):
    a=str(a)
    print("{}是{}位数".format(a,len(a)))
    print("逆序打印:",a[::-1])
numtype(312)

5.如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数,求1000以内的水仙花数(3位数)

def shuixianhua(a):
    shuixian=[]
    for i in range(100,a):
        shuzi=str(i)
        baiwei=int(shuzi[0])
        shiwei=int(shuzi[1])
        gewei=int(shuzi[2])
        if i==baiwei**3+shiwei**3+gewei**3:
            shuixian.append(i)
    print(shuixian)
shuixianhua(1000)

思维问题

1.已知 a的值为1,b的值为2,如何交换a和b的值?
右边的值赋给左边

a=1
b=2
c=b
b=a
a=c
print(a,b)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值