Python 基础练习题(三)
一、字典类型
1.创建一个依次包含键-值对'<': 'less than'和'==': 'equal'的字典 operators_dict,先使用 print()语句一行打印字符串'Here is the original dict:',再使用 for 循环遍历 已使用 sorted()函数按升序进行临时排序的包含字典 operators_dict 的所有键的列表,使用 print()语句一行输出类似字符串'Operator < means less than.'的语句;对字典 operators_dict 增加键-值对'>': 'greater than'后,输出一个换行,再使用 print()语句一行打印字符串'The dict was changed to:',再次使用 for 循环遍历 已使用 sorted()函数按升序进行临时排序的包含字典 operators_dict 的所有键的列表,使用 print()语句一行输出类似字符串'Operator < means less than.'的语句,确认字典 operators_dict 确实新增了一对键-值对。
2.又到了毕业季,牛牛作为牛客大学的学生会主席,决定对本校的应届毕业生进行就业调查。他创建了一个依次包含字符串'Niumei'、'Niu Ke Le'、'GURR'和'LOLO'的列表 survey_list,作为调查名单;又创建了一个依次包含键-值对'Niumei': 'Nowcoder'和'GURR': 'HUAWEI'的字典 result_dict,作为已记录的调查结果。请遍历列表 survey_list,如果遍历到的名字已出现在 包含字典 result_dict 的全部键的列表 里,则使用 print()语句一行输出类似字符串'Hi, Niumei! Thank you for participating in our graduation survey!'的语句以表达感谢,否则使用 print()语句一行输出类似字符串'Hi, Niu Ke Le! Could you take part in our graduation survey?'的语句以发出调查邀请。
3.创建一个依次包含键-值对{'name': 'Niuniu'和'Student ID': 1}的字典 my_dict_1,创建一个依次包含键-值对{'name': 'Niumei'和'Student ID': 2}的字典 my_dict_2,创建一个依次包含键-值对{'name': 'Niu Ke Le'和'Student ID': 3}的字典 my_dict_3,创建一个空列表 dict_list,使用 append()方法依次将字典 my_dict_1、my_dict_2 和 my_dict_3 添加到 dict_list 里,使用 for 循环遍历 dict_list,对于遍历到的字典,使用 print()语句一行输出类似字符串"Niuniu's student id is 1."的语句以打印对应字典中内容。
4.创建一个依次包含键-值对'Beijing': {Capital: 'China'}、'Moscow': {Capital: 'Russia'}和'Paris': {Capital: 'France'}的字典 cities_dict,请使用 for 循环遍历"已使用 sorted()函数按升序进行临时排序的包含字典 cities_dict 的所有键的列表",对于每一个遍历到的城市名,使用 print()语句一行输出类似字符串'Beijing is the capital of China!'的语句。
5.驼瑞驰调查了班上部分同学喜欢哪些颜色,并创建了一个依次包含键-值对'Allen': ['red', 'blue', 'yellow']、'Tom': ['green', 'white', 'blue']和'Andy': ['black', 'pink']的字典 result_dict,作为已记录的调查结果。现在驼瑞驰想查看字典 result_dict 的内容,你能帮帮他吗?使用 for 循环遍历"使用 sorted()函数按升序进行临时排序的包含字典 result_dict 的所有键的列表",对于每一个遍历到的名字,先使用 print()语句一行输出类似字符串"Allen's favorite colors are:"的语句,然后再使用 for 循环遍历该名字在字典 result_dict 中对应的列表,依次输出该列表中的颜色。
6.牛牛有两份列表,一份记录了牛客网用户的名字,另一份记录他们使用的语言。假设两份列表一一对应,请使用 zip 函数将两份列表封装字典,以名字为 key,语言为 value,然后直接输出字典。
7.正在学习英语的牛妹笔记本上准备了这样一个字典:{'a': ['apple', 'abandon', 'ant'], 'b': ['banana', 'bee', 'become'], 'c': ['cat', 'come'], 'd': 'down'}。请你创建这样一个字典,对于牛妹输入的字母,查询有哪些单词?
8.正在学习英语的牛妹创建了一个字典:{'a': ['apple', 'abandon', 'ant'], 'b': ['banana', 'bee', 'become'], 'c': ['cat', 'come'], 'd': 'down'}。现牛妹新学了一个字母 letter,以及一个新单词 word,请把它们增加到字典中,再输出更新后的字典。
9.Python 的字典可以用来计数,让要被计数的元素作为 key 值,它出现的频次作为 value 值,只要在遇到 key 值后更新它对应的 value 即可。现输入一个单词,使用字典统计单词中各个字母出现频次。
二、内置函数
1.牛牛给了牛妹一个一串无规则的数字,牛妹将其转换成列表后,使用 max 和 min 函数快速的找到了这些数字的最值,你能用 Python 代码实现一下吗?
2.牛牛想知道自己小组内的同事们的年龄和都有多少,他输入一串年龄序列,请将其转换成列表,并使用 sum 函数直接获取列表的和。
3.牛牛想要这样一个程序,只要是输入一个整数,不管正负,它一定转换为正数,即获取该数字的绝对值,你能用 abs 函数实现吗?
4.牛牛刚学习了 ASCII 码,他知道计算机中的字母很多用的都是这个编码方式,现在输入一个字母,你能使用 ord 函数将其转换为 ASCII 码对应的数字吗?
5.牛妹刚学习进制转换,对这方面掌控还不太熟练,她想请你帮她写一个十进制到十六进制的进制转换器,你能使用 hex 函数帮助她完成这个任务吗?
6.计算机内部都由二进制组成,但是早就习惯使用十进制的牛牛根本不知道这个数字的二进制是什么,你能使用 bin 函数帮助他将十进制数字转换成二进制吗?
7.在 Python 中,除了使用两个乘号相连外,还能使用 pow 函数表示幂运算。现牛牛输入正整数 x 与 y,请你使用两种方法分别计算 xy 与 yx。
8.在牛客网内部使用 1 标记正确回答的题,使用 0 表示回答错误的题。牛牛拿到自己的作答记录是一串 01 序列,他想知道自己一共答错了多少次,你能将这串序列转换为列表,使用 count 函数帮助牛牛统计一下吗?
9.牛客网有一个打卡系统,记录了每个人这一个星期上班打卡的记录(以名字的形式)。牛牛想知道自己在这一个星期是第几个打卡的人,用将这份名字记录转换为列表,然后使用 index 函数找到'NiuNiu'位置吗?
10.Python 有内置函数 isalpha、isdigit、isspace 可以分别判断字符串是否只包含字母、数字、空格,现在输入一个字符串,请分别输出这三个函数的判断结果。
11.牛客网公布中奖信息了,中奖信息是一个很长的字符串,牛牛想知道自己的名字('NiuNiu')有没有出现在其中,你能帮助他使用字符串的 find 函数查找一下吗?
12.牛客网喜欢'Niu'这个词,各个地方的称号、标语都会出现。现在给你一定长字符串 patten,你能使用 count 函数找到'Niu'在其中出现的次数吗?
13.英文句子都是由单词之间通过空格间隔而组成,牛牛想知道一句英语句子里面包含有哪些单词,你能使用 split 函数将它们全部按照空格分割,记录进列表中吗,请输出列表。
14.牛牛在和牛妹做一个游戏,牛牛给定了牛妹一些单词字符串,他想让牛妹把这些单词拼接成以空格间隔开的句子,很可惜牛妹 Python 没有学好,你能使用 join 函数帮帮她吗?
15.牛客网在录入用户名字信息发生了错误,所有的字符子串'ab'都被录成'a*',运营同学急坏了。你能使用 Python 字符串的 replace 函数,将名字信息中的'a*'全部修改回'ab'吗?
16.牛客网的财务同学很苦恼,各个部门提交的资料中关于金额的小数保留简直是乱七八糟,你能使用 round 函数,帮助财务同学将输入数字的小数位修正为四舍五入保留至最多两位小数吗?(请不要使用字符串格式化输出保留小数位)
17.牛牛听说 Python 中有一个很神奇的函数 eval(),只要输入的字符串是一个公式,它能够直接计算这个公式的值。现牛牛以字符串地形式输入一个公式,请你使用 eval()计算结果。
18. 某公司内部报名年会活动,因为是匿名报名,有的同事可能偷偷“帮助”别人报名了,导致一个名字出现多次。后台营运同学希望你能用 set 函数将这些名字记录为一个集合,以到达去重的目的,请输出这些名字创建的集合,输出的时候使用 sorted 函数对集合排序。
三、面向对象
1.请定义一个函数 cal(),该函数返回两个参数相减的差。输入第一个数字记录在变量 x 中,输入第二个数字记录在变量 y 中,将其转换成数字后调用函数计算 cal(x, y),再交换位置计算 cal(y, x)。
2.兔子的数量以这样的方式增长:每个月的兔子数量等于它前一个月的兔子数量加它前两个月的兔子数量,即 f(n)=f(n-1)+f(n-2)。假设第 1 个月的兔子有 2 只,第 2 个月的兔子有 3 只,你能使用递归的方法求得第 n 个月的兔子有多少只吗?
3.球的体积公式为 V=4πr²,请写一个函数,输入球的半径,返回球的表面积。球的半径如下:[1, 2, 4, 9, 10, 13],请输出这些半径下的表面积,π取 math 库的 math.pi。
4.牛牛的 Python 老师为了更好地管理班级,利用一个类 Student 来管理学生,这个类包含了学生姓名(str)、学号(str)、分数(int)、每次作业等级(list[str])等信息。请你帮助牛牛的老师实现这样一个类,并定义构造方法实现初始化,定义打印函数实现打印学生的姓名、学号、分数、提交作业的次数、每次作业的等级。
5.请为牛客网的员工创建一个 Employee 类,包括属性有姓名(name)、(salary),并设置初始化。同时该类包括一个方法 printclass,用于输出类似'NiuNiu‘s salary is 4000, and his age is 22'的语句。请根据输入的 name 与 salary 为该类创建实例 e,并调用 printclass 方法输出信息,如果没有年龄信息则输出错误信息"Error! No age"。根据输入的年龄为实例 e 直接添加属性 age 等于输入值,再次调用 printclass 方法输出信息。(printclass 方法中建议使用 try...except...结构)
6.请为牛客网的员工创建一个 Employee 类,包括属性有姓名(name)、(salary),并设置初始化。同时该类包括一个方法 printclass,用于输出类似'NiuNiu‘s salary is 4000, and his age is 22'的语句。请根据输入的信息为 Employee 类创建一个实例 e,调用 hasattr 方法检验实例有没有属性 age,如果存在属性 age 直接调用 printclass 输出,否则使用 setattr 函数为其添加属性 age,并设置值为输入后,再调用 printclass 输出。
7.请创建一个 Coordinate 类表示坐标系,属性有 x 和 y 表示横纵坐标,并为其创建初始化方法__init__。请重载方法__str__为输出坐标'(x, y)'。请重载方法__add__,更改 Coordinate 类的相加运算为横坐标与横坐标相加,纵坐标与纵坐标相加,返回结果也是 Coordinate 类。现在输入两组横纵坐标 x 和 y,请将其初始化为两个 Coordinate 类的实例 c1 和 c2,并将坐标相加后输出结果。
四、正则表达
1.牛牛最近正在研究网址,他发现好像很多网址的开头都是'https://www',他想知道任意一个网址都是这样开头吗。于是牛牛向你输入一个网址(字符串形式),你能使用正则函数 re.match 在起始位置帮他匹配一下有多少位是相同的吗?(区分大小写)
2.牛牛翻看以前记录朋友信息的电话薄,电话号码几位数字之间使用-间隔,后面还接了一下不太清楚什么意思的英文字母,你能使用正则匹配 re.sub 将除了数字以外的其他字符去掉,提取一个全数字电话号码吗?
3.牛牛记录电话号码时,习惯间隔几位就加一个-间隔,方便记忆,同时他还会在电话后面接多条 #引导的注释信息。拨打电话时,-可以被手机正常识别,#引导的注释信息就必须要去掉,你能使用正则匹配 re.match 将前面的数字及-信息提取出来,去掉后面注释信息。
版权声明: 本文为 InfoQ 作者【漫步桔田】的原创文章。
原文链接:【http://xie.infoq.cn/article/dcd15bc401b6a817ec9bd5723】。文章转载请联系作者。
评论