python入门题目填空题_Python基础练习题

同上一篇,依旧是上周末做的练习题笔记。

笔记代码直接从jupyter notebook笔记本中导出的,因为此,所以有些代码中,输出语句中没有print。

参考时,请注意咯!

1 列出python中可变数据类型和不可变数据类型,并简述原理

答:Python中可变数据类型有:列表、字典、集合;不可变数据类型有:数值型、字符创、元祖

【了解】

不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。

可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。

总结:不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变

2  用lambda函数实现两个数相乘

# 用lambda函数实现两个数相乘

c = lambda a , b : a * b

c(3,2)

运行结果: 6

3 字典根据键从小到大排序dict={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}

# 字典根据键从小到大排序dict

from collections import OrderedDict

dict = {"name":"zs","age":18,"city":"深圳","tel":"1362626627"}

OrderedDict(sorted(dict.items(),key= lambda x:x[0]) )

运行结果:

OrderedDict([('age', 18),

('city', '深圳'),

('name', 'zs'),

('tel', '1362626627')])

4 利用collections库的Counter方法统计字符串每个单词出现的次数"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"

# 利用collections库中的Counter方法统计字符创中每个单词出现的次数

from collections import Counter

a = "kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"

Counter(a.split(';'))

这道题目,我看到网上有其他做法,将各个字母出现的次数计算了出来。但我理解,这里是计算“单词”出现的次数,不是单独的字母,所以用split函数提前做了处理。

运行结果:

Counter({'kjalfj': 1,

'ldsjafl': 1,

'hdsllfdhg': 1,

'lahfbl': 1,

'hl': 1,

'ahlf': 1,

'h': 1})

5 字符串a = "not 404 found 张三 99 深圳",每个词中间是空格,用正则过滤掉英文和数字,最终输出"张三 深圳"

#用正则过滤字符串中英文和数字

import re

a = "not 404 found 张三 99 深圳"

b = a.split(" ")

res = re.findall('\d+|[a-zA-Z]+',a)

for i in res:

if i in b:

b.remove(i)

new_str = " ".join(b)

print(new_str)

运行结果:张三 深圳

6 filter方法求出列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

list(filter(lambda x: x%2 !=0,a))

运行结果:

[1, 3, 5, 7, 9]

7  列表推导式求列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

b = [x for x in a if x%2 ==1]

print(b)

运行结果:

[1, 3, 5, 7, 9]

8 写代码,有如下变量,请按照要求实现每个功能 name = " aleX "

a.移除name变量对应的值两边的空格,并输入移除有的内容

# a.移除name变量对应的值两边的空格,并输入移除有的内容

name = " aleX "

print(name.strip())

运行结果:

aleX

b.判断name变量对应的值是否以 "al"开头,并输出结果

# b.判断name变量对应的值是否以 "al"开头,并输出结果

name = " aleX "

print(name.startswith("al"))

运行结果:

False

c.判断name变量对应的值是否以 "X"结尾,并输出结果

# c.判断name变量对应的值是否以 "X"结尾,并输出结果

name = " aleX "

print(name.endswith("X"))

运行结果:

False

d.将name变量对应的值中的 " l" 替换为 " p",并输出结果

# d.将name变量对应的值中的 " l" 替换为 " p",并输出结果

name = " aleX "

print(name.replace("l","p"))

运行结果:

apeX

【补充下replace函数语法:】 Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。

str.replace(old, new[, max]) old -- 将被替换的子字符串。 new -- 新字符串,用于替换old子字符串。 max -- 可选字符串, 替换不超过 max 次

e.将name变量对应的值根据 " l" 分割,并输出结果。

# e.将name变量对应的值根据 " l" 分割,并输出结果。

name = " aleX "

print(name.split("l"))

运行结果:

[' a', 'eX ']

f. 请问,上一题 分割之后得到值是什么类型?

# f.请问,上一题 分割之后得到值是什么类型?

# name变量经过分割后,得到列表List。

print(type(name.split("l")))

#list内部值为字符串

print(type(name.split("l")[0]))

运行结果:

g.将name变量对应的值变大写,并输出结果

# g.将name变量对应的值变大写,并输出结果

print(name.upper())

运行结果:

ALEX

h.将name变量对应的值变小写,并输出结果

# h.将name变量对应的值变小写,并输出结果

print(name.lower())

运行结果:

alex

i.请输出name变量对应的值的第2个字符?

# i.请输出name变量对应的值的第2个字符?

name = " aleX "

print(name[1:2])

运行结果:

a

j.请输出name变量对应的值的前3个字符?

# j.请输出name变量对应的值的前3个字符?

name = " aleX "

print(name[:3])

运行结果: al

k.请输出name变量对应的值的后2个字符?

# k.请输出name变量对应的值的后2个字符?

name = " aleX "

print(name[-2:])

运行结果:

X

l.请输出name变量对应的值中 "e" 所在索引位置?

# l.请输出name变量对应的值中 "e" 所在索引位置?

name = " aleX "

print(name.find('e'))

运行结果:3

查找字符串中的索引位置,我们可以使用find()方法或者index()方法。 这两个方法都可以检测字符串中是否包含子字符串,并且可以指定检索的开始和结束的索引范围。 但是要注意的是,如果要查找的子字符串不在原字符串中,find()函数返回-1;但index()函数会报错“ValueError: substring not found”。 基于此,推荐使用find()函数。

# 使用enumerate函数

name = " aleX "

for k,v in enumerate(name):

if v == "e":

print("e的索引是: " +str(k))

e的索引是: 3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值