牛客网Python篇入门编程习题

目 录

一、 输入输出

二、 类型转换

三、 字符类型

四、 列表类型

五、 运算符号

六、 条件语句

七、 循环语句

八、 元组类型

九、 字典类型

十、 内置函数

十一、 面向对象

十二、 正则表达

本文题库非常适合刚刚接触Python编程的同学。

一、 输入输出

1.将字符串 ‘Hello World!’ 存储到变量str中,再使用print语句将其打印出来。

str =  'Hello World!'
print(str)

2.将字符串 ‘Hello World!’ 存储到变量str1中,
再将字符串 ‘Hello Nowcoder!’ 存储到变量str2中,
再使用print语句将其打印出来(一行一个变量)。

str1 = 'Hello World!'
str2 = 'Hello Nowcoder!'
print(str1)
print(str2)

3.小白正在学习Python,从变量输出开始。请使用input函数读入一个字符串,然后将其输出。

print(input())

4.在学会读入字符串以后,小白还想要读入整数,
请你帮他使用input函数读入数字并输出数字与变量类型。

num = int(input())
print(num)
print(type(num))

5.牛牛、牛妹和牛可乐正在Nowcoder学习Python语言,现在给定他们三个当中的某一个名字name,假设输入的name为Niuniu,则输出 I am Niuniu and I am studying Python in Nowcoder!

请按以上句式输出相应的英文句子。

name = input()
print('I am {} and I am studying Python in Nowcoder!'.format(name))

6.牛牛正在学习Python的输出,他想要使用print函数控制小数的位数,
你能帮助它把所有读入的数据都保留两位小数输出吗?

print('%.2f' %float(input()))

二、 类型转换

1.日常生活中我们会遇到很多小数,但是有的人不喜欢小数,因此会用四舍五入的方式将其去掉。在Python中我们更加简单,可以利用强制类型转换将小数转变成整数,请你试一试。

print(int(float(input())))

2.虽说很多人讨厌小数点,但是有时候小数点是必不可少的一项,请你使用强制类型转换为输入的整数增加小数点,并输出改变类型后的变量类型。

num = float(int(input()))
print(num)
print(type(num))

3.计算的世界,除了二进制与十进制,使用最多的就是十六进制了,现在使用input读入一个十六进制的数字,输出它的十进制数字是多少?

num = input()
print(int(num,16))

三、 字符类型

1.牛牛有两个最好的朋友,他们的名字分别用input读入记录在两个字符串中,请使用字符串连接(+)帮助牛牛将两个朋友的名字依次连接在一个字符串中输出。

name1 = input()
name2 = input()
print(name1 + name2)

2.牛妹正在学英语,但是背单词实在是太痛苦了,她想让你帮她写一个小程序,能够根据输入的单词,快速得到单词的长度。

print(len(input()))

3.牛牛、牛妹和牛可乐都是Nowcoder的用户,某天Nowcoder的管理员希望将他们的用户名以某种格式进行显示,现在给定他们三个当中的某一个名字name,请分别按全小写、全大写和首字母大写的方式对name进行格式化输出(注:每种格式独占一行)。

name = input()
print(name.lower())
print(name.upper())
print(name.title())

4.牛牛、牛妹和牛可乐都是Nowcoder的用户,某天Nowcoder的管理员由于某种错误的操作导致他们的用户名的左右两边增加了一些多余的空白符(如空格或’\t’等),现在给定他们三个当中的某一个名字name,请输出name去掉两边的空白符后的原本的内容。

name = input().strip()
print(name)

5.牛牛正在学习Python,他想多次输出朋友的名字,但是因为还没有学习循环语句,他不知道该怎么输出,你能够帮助他将输入的朋友的名字重复输出100次吗?(提示:不可以使用循环或者递归语句,使用字符串 * 运算)

print(input()*100)

6.牛客网正在录入用户的昵称,但是有的昵称太长了,对于这些过长的昵称,牛牛觉得截取昵称字符串前10个字符就可以了,你可以帮他写一个程序吗?

print(input()[:10])

四、 列表类型

1.某公司在面试结束后,创建了一个依次包含字符串 ‘Allen’ 和 ‘Tom’ 的列表offer_list,
作为通过面试的名单。请你依次对列表中的名字发送类似
‘Allen, you have passed our interview and will soon become a member of our company.’ 的句子。
但由于Tom有了其他的选择,没有确认这个offer,HR选择了正好能够确认这个offer的Andy,
所以请把列表offer_list中 ‘Tom’ 的名字换成 ‘Andy’ ,再发送类似 ‘Andy, welcome to join us!’ 句子。

offer_list=['Allen','Tom']
for x in offer_list:
    print('{}, you have passed our interview and will soon become a member of our company.'.format(x))
offer_list[1]='Andy'
for y in offer_list:
    print('{}, welcome to join us!'.format(y))

2.一串连续的数据用什么记录最合适,牛牛认为在Python中非列表(list)莫属了。现输入牛牛朋友们的名字,请使用list函数与split函数将它们封装成列表,再整个输出列表。

print(input().split())

3.牛牛在牛客网系统录入了一连串数字,数字之间依靠逗号隔开,你能帮助他将这些数字存储在列表中吗,列表元素以int的形式。

num_str = input().split()
num = [int(i) for i in num_str]
print(num)

4.牛牛学会了使用list函数与split函数将输入的连续字符串封装成列表,你能够帮他使用len函数统计一些公输入了多少字符串,列表中有多少元素吗?

print(len(input().split()))

5.为庆祝驼瑞驰在牛爱网找到合适的对象,驼瑞驰通过输入的多个连续字符串创建了一个列表作为派对邀请名单,在检查的时候发现少了他最好的朋友”Allen”的名字,你能使用append函数将这个名字加到列表末尾吗?添加完成请输出完整列表。

name = input().split()
name.append('Allen')
print(name)

6.为庆祝驼瑞驰在牛爱网找到合适的对象,驼瑞驰通过输入的多个连续字符串创建了一个列表作为派对邀请名单,在检查的时候发现少了他最好的朋友”Allen”的名字,因为是最好的朋友,他想让这个名字出现在邀请列表的最前面,你能用insert函数帮他实现吗?请输出插入后的完整列表。

name = input().split()
name.insert(0,'Allen')
print(name)
  1. 牛牛在各大互联网公司投入了简历,公司的名字通过字符串的形式在一行中输入,请用列表记录。现在牛牛已经确定了第一所公司的HR表露了不录用他的态度,请你使用del函数帮助牛牛从列表中删除第一个元素,然后输出列表。
name = input().split()
name.pop(0)
print(name)

8.牛妹有一个坏习惯,一旦与朋友吵架了,她就要删除好友。现在输入一个行多个字符串表示牛妹的朋友,请把它们封装成列表,然后再输入与牛妹吵架的朋友的名字,请使用remove函数帮她从列表中删除这个好友,然后输出完整列表。

name = input().split()
name.remove(input())
print(name)

9.某实验班实行末位淘汰制,期中考试需要淘汰末三位同学。现输入一行多个字符串表示按分数排名的该班级同学的名字(数量一定不少于三个),请你使用list将其封装为列表,然后使用三次pop函数,去掉末三位同学的名字,最后输出淘汰后的班级名字列表。

name = input().split()
name.pop()
name.pop()
name.pop()
print(name)

10.创建一个依次包含字符串’P’、’y’、’t’、’h’、’o’和’n’的列表my_list,先使用sorted函数对列表my_list进行临时排序,第一行输出排序后的完整列表,第二行输出原始的列表。再使用sort函数对列表my_list进行降序排序,第三行输出排序后完整的列表。

my_list = ['P','y','t','h','o','n']
my_list1 = my_list
print(sorted(my_list))
print(my_list)
my_list1.sort(reverse=True)
print(my_list1)

11.牛牛有一个列表记录了各个朋友的喜欢的数字,num = [3, 5, 9, 0, 1, 9, 0, 3],请你帮他创建列表,然后使用reverse函数将列表反转输出。

num = [3, 5, 9, 0, 1, 9, 0, 3]
num.reverse()
print(num)

12.牛牛有一个name = [‘Niumei’, ‘YOLO’, ‘Niu Ke Le’, ‘Mona’] 记录了他最好的朋友们的名字,
请创建一个二维列表friends,使用append函数将name添加到friends的第一行。
假如Niumei最喜欢吃pizza,最喜欢数字3,YOLO最喜欢吃fish, 最喜欢数字6,
Niu Ke Le最喜欢吃potato,最喜欢数字0,Mona最喜欢吃beef,最喜欢数字3。
请再次创建一个列表food依次记录朋友们最喜欢吃的食物,
并将创建好的列表使用append函数添加到friends的第二行;
然后再创建一个列表number依次记录朋友们最喜欢的颜色,
并将创建好的列表使用append函数添加到friends的第三行。
这样friends就是一个二维list,使用print函数直接打印这个二维list。

friends = []
name = ['Niumei', 'YOLO', 'Niu Ke Le', 'Mona']
food =  ['pizza', 'fish', 'potato', 'beef']
number = [3, 6, 0, 3]
friends.append(name)
friends.append(food)
friends.append(number)
print(friends)

13.牛牛和牛妹一起玩密码游戏,牛牛作为发送方会发送一个4位数的整数给牛妹,牛妹接收后将对密码进行破解。破解方案如下:每位数字都要加上3再除以9的余数代替该位数字,然后将第1位和第3位数字交换,第2位和第4位数字交换。请输出牛妹破解后的密码。

nums = input()
num_str = ''
for i in nums:
    num_str = num_str + str((int(i)+3)%9)
num_str = num_str[2] + num_str[3] + num_str[0] + num_str[1]
print(num_str)

14.栈是一种先进后出的数据结构,类似我们生活中挤电梯,最后进入的肯定是先出来,现我们用Python的列表来模拟栈。假设初始的列表为 stack = [1, 2, 3, 4, 5],请将其视作栈,使用pop函数弹出末尾两个元素,再使用append函数将输入元素加入到栈中,每次操作完成要输出整个列表。

stack = [1, 2, 3, 4, 5]
num = int(input())
stack.pop()
print(stack)
stack.pop()
print(stack)
stack.append(num)
print(stack)

15.队列是一种先进先出的数据结构,类似食堂排队打饭,先入队的元素当然要先出队,先请用Python列表模拟队列。现有一列表 queue = [1, 2, 3, 4, 5] 被视作队列,请使用pop函数连续两次取出队首元素,再使用append函数将输入元素添加到队尾,每次操作后都要输出完整的列表。

queue = [1, 2, 3, 4, 5]
num = int(input())
queue.pop(0)
print(queue)
queue.pop(0)
print(queue)
queue.append(num)
print(queue)

16.创建一个列表group_list,其中依次包含字符串 ‘Tom’, ‘Allen’, ‘Jane’, ‘William’, ‘Tony’ 表示这个小组成员的名字。现有三项任务需要他们去完成,根据不同任务的繁琐度和实际情况需要分别派2人、3人、2人来完成,他们决定通过对列表分片来分配任务。
使用print()语句和切片来打印列表group_list的前两个元素表示去做第一个任务的人的名字,
再使用print()语句和切片来打印列表group_list的中间三个元素表示去做第二个任务的人的名字,
再使用print()语句和切片来打印列表group_list的后两个元素表示去做第三个任务的人的名字。

group_list = ['Tom', 'Allen', 'Jane', 'William', 'Tony' ]
print(group_list[:2])
print(group_list[1:4])
print(group_list[3:])

五、 运算符号

1.为了辅导刚上小学的妹妹做功课,牛牛想用Python写一个加减器帮助妹妹巩固加减运算。现要求输入两个数字x与y,分别输出x+y的结果和x-y的结果。

x = int(input())
y = int(input())
print(x + y)
print(x - y)

2.刚刚学习Python的牛牛发现,同样的符号出现两次可能代表不同的运算,比如*。现输入两个数字x与y,请分别计算x * y 与 xy。

x = int(input())
y = int(input())
print(x * y)
print(x ** y)

3.我们都知道在计算机里除法有两种,一种是整除,结果有商和余数,另一种则是将其除到有小数。现输入两个数字x与y,分别计算两种除法下x/y的结果。

x = int(input())
y = int(input())
print(x//y,x%y)
print('%.2f' %(x/y))

4.牛牛有一个习惯,新认识一个朋友他就想知道这个朋友和自己的年龄是不是一样大,输入两个整数表示牛牛的年龄和朋友的年龄,请输出牛牛的年龄是否等于朋友的年龄的比较结果?

num = input().split()
print(int(num[0])==int(num[1]))

5.牛牛在和牛妹玩猜数字游戏,他们想请你写一个快速判断牛牛的数字是不是大于牛妹数字的程序。输入两个整数,以空格间隔,输出第一个数字是否大于第二个数字,第一个数字是否小于第二个数字。

num = input().split()
print(int(num[0]) > int(num[1]))
print(int(num[0]) < int(num[1]))

6.牛妹去游乐园,对于某项目,如果牛妹的身高k不超过某个标准x,就不需要收取额外费用,但是该项目有需要身高不低于y才可以保障安全。现依次输入三个数字k、x、y,牛妹想让你帮她比较一下,她的身高是否不超过x,是否不低于y。

num = input().split()
print(float(num[0]) = float(num[2]))

7.牛牛想要锻炼自己的逻辑能力,于是输入了两个整型变量x和y,分别判断它们的与、或、非关系,你能帮他输出x与y,x或y,非x,非y的值吗?

num = input().split()
print(int(num[0]) and int(num[1]))
print(int(num[0]) or int(num[1]))
print(not(int(num[0])))
print(not(int(num[1])))

8.正在学习Python的牛可乐,对Python里面的大小比较很疑惑。他知道数字之间可以相等,有大小关系,但是字符串之间怎么比较,他就很纳闷了。现在牛可乐输入两个字符串s1与s2,请你帮他比较这两个字符串是否相等,两个字符串各自调用lower函数后还是否相等。

str1 = input()
str2 = input()
print(str1==str2)
print(str1.lower()==str2.lower())

9.牛客网内部有一个刷题俱乐部,是大家比拼刷题与交流算法的地方。现在给出俱乐部的名单,请以列表的形式记录它们,并使用Python的成员运算检验给出的名字name是否属于这个俱乐部?(名字区分大小写)

name = input().split()
query = input()
print(query in name)

10.Python有位运算,是直接将数字看成二进制,直接对二进制数字的每一位进行运算。现输入两个十进制整数x、y,请计算它们的位与、位或,输出按照十进制的形式。

name = input().split()
print(int(name[0])&int(name[1]))
print(int(name[0])|int(name[1]))

11.牛客网为员工举行了一项快速心算大赛,需要程序员大大写一款涉及加减乘除的验算小程序。假如输入的数字分别是x、y、z、k,请输出x+y的结果与z-k的结果相乘的值。

num = input().split()
print((int(num[0])+int(num[1]))*(int(num[2])-int(num[3])))

六、 条件语句

1.Python的条件语句依靠将运算结果转变成布尔值后进行判断,然后分支,如果我们直接判断布尔值会怎么样呢?输入布尔变量,使用条件语句判断,如果为真则输出”Hello World!”,否则输出”Erros!”。

num = int(input())
if num:
    print('Hello World!')
else:
    print('Erros!')

2.创建一个空列表my_list,如果列表为空,请使用print()语句一行输出字符串’my_list is empty!’,

否则使用print()语句一行输出字符串’my_list is not empty!’。

my_list = []
if my_list:
    print('my_list is not empty!')
else:
    print('my_list is empty!')

3.创建一个依次包含字符串’Niuniu’、’Niumei’、’GURR’和’LOLO’的列表current_users,
再创建一个依次包含字符串’GurR’、’Niu Ke Le’、’LoLo’和’Tuo Rui Chi’的列表new_users,
使用for循环遍历new_users,如果遍历到的新用户名在current_users中,
则使用print()语句一行输出类似字符串’The user name GurR has already been registered! Please change it and try again!’的语句,
否则使用print()语句一行输出类似字符串’Congratulations, the user name Niu Ke Le is available!’的语句。(注:用户名的比较不区分大小写)

current_users = ['Niuniu', 'Niumei', 'GURR', 'LOLO']
new_users = ['GurR', 'Niu Ke Le', 'LoLo', 'Tuo Rui Chi']
current_users = [name.upper() for name in current_users]
for name in new_users:
        if name.upper() in current_users :
            print('The user name {} has already been registered! Please change it and try again!'.format(name))
        else:
            print('Congratulations, the user name {} is available!'.format(name))

4.客食堂今天准备了很多丰盛的午餐, ‘pizza’:10块钱一份,’rice’ :2块钱一份,’yogurt’:5块钱一份,剩下的其他菜品都是8块钱一份。牛牛在某窗口点餐,请你根据他输入的字符串,使用if-elif-else语句判断牛牛需要花费多少钱?

foods = { 'pizza':10,'rice':2 ,'yogurt':5}
food = input('')
if food in foods:
    print(foods[food])
else:
    print(8)

5.牛牛在门头沟大学学习,一学年过去了,需要根据他的成绩计算他的平均绩点,假如绩点与等级的对应关系如下表所示。请根据输入的等级和学分数(A-4.0、 B-3.0、C-2.0、 D-1.0、 F – 0),计算牛牛的均绩(每门课学分乘上单门课绩点,求和后对学分求均值)。

grades = {'A': 4.0, 'B': 3.0, 'C': 2.0, 'D': 1.0, 'F': 0}

grades_sum = 0
number_sum = 0
while True:
    x = input()
    if x == 'False':
        break
    else:
        y = float(input())
        grades_sum +=grades[x] * y
        number_sum += y
print('%.2f' %(grades_sum/number_sum))

6.牛客网的登录系统需要验证用户名与密码,当二者都正确时才允许登录,其中管理员的用户名为’admis’,密码为’Nowcoder666’。请你使用if-else语句,根据输入的用户名ID和密码,判断该用户等否登录。

name = input()
password = input()
if name == 'admis' and password == 'Nowcoder666':
    print('Welcome!')
else:
    print('user id or password is not correct!')

七、 循环语句

1.创建一个依次包含字符串’P’、’y’、’t’、’h’、’o’和’n’的列表my_list,
使用print()语句一行打印字符串’Here is the original list:’,再直接使用print()语句把刚刚创建的列表my_list整个打印出来,
输出一个换行,再使用print()语句一行打印字符串’The number that my_list has is:’,
再使用len()函数获取列表my_list里面有多少个字符串,并使用print()函数一行打印该整数。

my_list = ['P','y','t','h','o','n']
print('Here is the original list:')
print(my_list)
print()
print('The number that my_list has is:')
print(len(my_list))

2.牛牛、牛妹和牛可乐都是Nowcoder的忠实用户,又到了一年一度的程序员节(10月24号),毫无疑问,他们都登录Nowcoder了,因为他们还没有刷完牛客题霸…

Nowcoder的管理员想对他们发送一些简单登录问候消息,并对他们表达了节日祝福。
请创建一个依次包含字符串 ‘Niuniu’ 、’Niumei’ 和 ‘Niu Ke Le’ 的列表users_list,
请使用for循环遍历列表user_list,依次对列表users_list中的名字输出一行类似 ‘Hi, Niuniu! Welcome to Nowcoder!’ 的字符串,
for循环结束后,最后输出一行字符串 “Happy Programmers’ Day to everyone!”

users_list = [ 'Niuniu' ,'Niumei' , 'Niu Ke Le']
for name in users_list:
    print('Hi, {}! Welcome to Nowcoder!'.format(name))
print('Happy Programmers\' Day to everyone!')

3.牛牛刚学循环语句,你能教他使用for语句创建一个从10到50的数字列表吗?请输出完整列表,并输出列表的首尾元素检验是否是从10到50。

nums = [num for num in range(10,51)]
print(nums)
print(nums[0],nums[-1])

4.牛牛有一个列表,记录了他和同事们的年龄,你能用for循环遍历链表的每一个元素,将其累加求得他们年龄的总和与平均数吗?

num = input().split()
age = [int(i) for i in num]
print(sum(age),'%.1f'%(sum(age)/len(age)))

5.通过给函数 range()指定第三个参数来创建一个列表my_list,其中包含 [0, 19] 中的所有偶数;再使用一个 for 循环将这些数字都打印出来(每个数字独占一行)。

my_list = [num for num in range(0,19,2)]
for x in my_list:
    print(x)

6.创建一个列表my_list,其中包括 [1, 50] 内全部能被5整除的数字;再使用一个 for 循环将这个列表中的数字都打印出来(每个数字独占一行)。

my_list = [num for num in range(1,51) if num%5==0]
for x in my_list:
    print(x)

7.在Python中, * 代表乘法运算, ** 代表次方运算。请创建一个空列表my_list,使用for循环、range()函数和append()函数令列表my_list包含底数2的 [1, 10] 次方,再使用一个 for 循环将这些次方数都打印出来(每个数字独占一行)。

my_list = []
for num in range(1,11):
    my_list.append(2**num)
for i in my_list:
    print(i)

8.Python支持的解析操作,可以根据某些元素创建列表。请你使用列表解析创建一个0-9的列表,并输出该列表。

num= [i for i in range(10)]
print(num)

9.牛妹有一个暑期想吃的东西的清单,你可以把它视作一个Python的list,[‘apple’, ‘ice cream’, ‘watermelon’, ‘chips’, ‘hotdogs’, ‘hotpot’]。牛妹决定从清单最后一种食物开始往前吃,每次吃掉一种食物就把它从list中pop掉,请使用while循环依次打印牛妹每次吃掉一种食物后剩余的清单。

name = ['apple', 'ice cream', 'watermelon', 'chips', 'hotdogs', 'hotpot']
while name:
    name.pop()
    print(name)

10.创建一个依次包含字符串’Niuniu’、’Niumei’、’HR’、’Niu Ke Le’、’GURR’ 和 ‘LOLO’ 的列表users_list,使用for循环遍历users_list,如果遍历到的用户名是 ‘HR’ ,则使用print()语句一行打印字符串 ‘Hi, HR! Would you like to hire someone?’,否则使用print()语句一行打印类似字符串 ‘Hi, Niuniu! Welcome to Nowcoder!’ 的语句。

users_list = ['Niuniu', 'Niumei', 'HR', 'Niu Ke Le', 'GURR', 'LOLO']
for name in users_list:
    if name == 'HR':
        print( 'Hi, {}! Would you like to hire someone?'.format(name))
    else:
        print('Hi, {}! Welcome to Nowcoder!'.format(name))

11.牛牛在牛客网举行抽奖游戏,他准备了一个列表的元素[3, 45, 9, 8, 12, 89, 103, 42, 54, 79],打算依次输出这些元素。他让牛妹随便猜一个数字x,在输出的时候如果输出的元素等于牛妹猜的x,就不再继续输出。请你使用Python的for循环模拟这个输出过程,并根据输入的x使用break语句提前结束循环。

name = [3, 45, 9, 8, 12, 89, 103, 42, 54, 79]
x = int(input())
for i in name:
    if x == i:
        break
    else:
         print(i)

12.牛客网在玩数数字游戏,员工一致认为13是一个”不详的数字”,请你使用for循环帮他们从1数到15,并使用continue语句跳过13。

for i in range(1,16):
    if i == 13:
        continue
    else:
        print(i,end=' ')

13.牛牛正在做矩阵运算,就是将矩阵中每个位置的元素都乘上n。现有一个矩阵[[1, 2, 3], [4, 5, 6], [7, 8, 9]],请使用list记录该矩阵,对于牛牛输入的数字n,输出该矩阵乘以n的结果。

nums = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
num = int(input())
for x in nums:
    for y in range(3):
        x[y] = x[y] * num
print(nums)

八、元组类型

1.牛客运动会上有一项双人项目,因为报名成功以后双人成员不允许被修改,因此请使用元组(tuple)进行记录。先输入两个人的名字,请输出他们报名成功以后的元组。

name1 = input()
name2 = input()
name = name1, name2
print(name)

2.牛牛和牛妹报名了牛客运动会的双人项目,但是由于比赛前一天牛妹身体不适,不能参加第二天的运动,于是想让牛可乐代替自己。请创建一个依次包含字符串’Niuniu’和’Niumei’的元组entry_form,并直接输出整个元组。然后尝试使用try- except代码块执行语句:entry-form[1] = ‘Niukele’,若是引发TypeError错误,请输出’The entry form cannot be modified!’。

entry_form = ('Niuniu', 'Niumei')
print( entry_form)
try:
    entry_form[1] = 'Niukele'
except:
    print('The entry form cannot be modified!')

3.学校录入考试排名信息以后,为了防止修改,都会记录为Python元组。请你根据输入的字符串,使用tuple函数将它们作为考生姓名记录到元组中,并使用切片法输出前三名同学的名字。

name = tuple(input().split())
print(name[:3])

4.牛客网有一份秘密名单,[‘Tom’, ‘Tony’, ‘Allen’, ‘Cydin’, ‘Lucy’, ‘Anna’],请将它们创建为不可被修改的Python元组后,输出整个元组。对于牛牛输入的名字name,请使用成员运算检验它是否出现在这份秘密名单中,若是在名单中则输出’Congratulations!’,否则输出’What a pity!’.

name = tuple(['Tom', 'Tony', 'Allen', 'Cydin', 'Lucy', 'Anna'])
print(name)
x = input()
if x in name:
    print('Congratulations!')
else:
    print('What a pity!')

5.牛牛有一个元组,其中记录数字1-5,请创建该元组,并使用len函数获取该元组的长度。
牛牛觉得这个元组太短了,想要在该元组后再连接一个6-10的元祖,请输出连接后的元组及长度。

num1 = [i for i in range(1, 6)]
print(tuple(num1))
print(len(tuple(num1)))
num2 = [i for i in range(6, 11)]
num = num1 + num2
print(tuple(num))
print(len(tuple(num)))

九、 字典类型

1.创建一个依次包含键-值对’

operators_dict={'']='greater than'
print('The dict was changed to:')
for a,b in sorted(operators_dict.items()):
    print('Operator {} means {}.'.format(a,b))

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?’的语句以发出调查邀请。

survey_list = ['Niumei','Niu Ke Le','GURR','LOLO']
result_dict = {'Niumei':'Nowcoder','GURR':'HUAWEI'}
for name in survey_list:
    if name in result_dict:
        print('Hi, {}! Thank you for participating in our graduation survey!'.format(name))
    else:
        print('Hi, {}! Could you take part in our graduation survey?'.format(name))

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.”的语句以打印对应字典中的内容。

my_dict_1 = {'name': 'Niuniu', 'Student ID': 1}
my_dict_2 = {'name': 'Niumei', 'Student ID': 2}
my_dict_3 = {'name': 'Niu Ke Le', 'Student ID': 3}
dict_list = []
dict_list.append(my_dict_1)
dict_list.append(my_dict_2)
dict_list.append(my_dict_3)
for i in dict_list:
    print('{}\'s student id is {}.'.format(i['name'], i['Student ID']))

4.创建一个依次包含键-值对’Beijing’: {Capital: ‘China’}、’Moscow’: {Capital: ‘Russia’}和’Paris’: {Capital: ‘France’}的字典cities_dict,请使用for循环遍历”已使用sorted()函数按升序进行临时排序的包含字典cities_dict的所有键的列表”,对于每一个遍历到的城市名,使用print()语句一行输出类似字符串’Beijing is the capital of China!’的语句。

cities_dict = {'Beijing':{'Capital':"China"},'Moscow':{'Capital':'Russia'},'Paris':{'Capital':'France'}}
for x in sorted(cities_dict):
    for y in cities_dict[x]:
        print("{} is the capital of {}!".format(x, cities_dict[x][y]))

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中对应的列表,依次输出该列表中的颜色。

result_dict={'Allen':['red','blue','yellow'],'Tom':['green','white','blue'],'Andy':['black','pink']}
for x,y in sorted(result_dict.items()):
    print(x +'\'s favorite colors are:')
    for i in y:
        print(i)

6.牛牛有两份列表,一份记录了牛客网用户的名字,另一份记录他们使用的语言。假设两份列表一一对应,请使用zip函数将两份列表封装字典,以名字为key,语言为value,然后直接输出字典。

name = input().split()
language = input().split()
name_language = {name:language for name,language in zip(name,language)}
print(name_language)

7.正在学习英语的牛妹笔记本上准备了这样一个字典:{‘a’: [‘apple’, ‘abandon’, ‘ant’], ‘b’: [‘banana’, ‘bee’, ‘become’], ‘c’: [‘cat’, ‘come’], ‘d’: ‘down’}。请你创建这样一个字典,对于牛妹输入的字母,查询有哪些单词?

x = {'a': ['apple', 'abandon', 'ant'], 'b': ['banana', 'bee', 'become'], 'c': ['cat', 'come'], 'd': 'down'}
y = input()
print(' '.join(x[y]))

8.正在学习英语的牛妹创建了一个字典:{‘a’: [‘apple’, ‘abandon’, ‘ant’], ‘b’: [‘banana’, ‘bee’, ‘become’], ‘c’: [‘cat’, ‘come’], ‘d’: ‘down’}。现牛妹新学了一个字母letter,以及一个新单词word,请把它们增加到字典中,再输出更新后的字典。

x = {'a': ['apple', 'abandon', 'ant'], 'b': ['banana', 'bee', 'become'], 'c': ['cat', 'come'], 'd': 'down'}
letter = input()
word = input()
x[letter] = word
print(x)

9.Python的字典可以用来计数,让要被计数的元素作为key值,它出现的频次作为value值,只要在遇到key值后更新它对应的value即可。现输入一个单词,使用字典统计单词中各个字母出现频次。

x = {}
y = input()
for i in y:
    x[i] = y.count(i)
print(x)

十、 内置函数

1.牛牛给了牛妹一个一串无规则的数字,牛妹将其转换成列表后,使用max和min函数快速的找到了这些数字的最值,你能用Python代码实现一下吗?

x = [int(i) for i in input().split()]
print(max(x))
print(min(x))

2.牛牛想知道自己小组内的同事们的年龄和都有多少,他输入一串年龄序列,请将其转换成列表,并使用sum函数直接获取列表的和。

x = [int(i) for i in input().split()]
print(sum(x))

3.牛牛想要这样一个程序,只要是输入一个整数,不管正负,它一定转换为正数,即获取该数字的绝对值,你能用abs函数实现吗?

print(abs(int(input())))

4.牛牛刚学习了ASCII码,他知道计算机中的字母很多用的都是这个编码方式,现在输入一个字母,你能使用ord函数将其转换为ASCII码对应的数字吗?

print(ord(input()))

5.牛妹刚学习进制转换,对这方面掌控还不太熟练,她想请你帮她写一个十进制到十六进制的进制转换器,你能使用hex函数帮助她完成这个任务吗?

print(hex(int(input())))

6.计算机内部都由二进制组成,但是早就习惯使用十进制的牛牛根本不知道这个数字的二进制是什么,你能使用bin函数帮助他将十进制数字转换成二进制吗?

print(bin(int(input())))

7.在Python中,除了使用两个乘号相连外,还能使用pow函数表示幂运算。现牛牛输入正整数x与y,请你使用两种方法分别计算xy与yx。

x = [int(i) for i in input().split()]
print(x[0]**x[1])
print(pow(x[1],x[0]))

8.在牛客网内部使用1标记正确回答的题,使用0表示回答错误的题。牛牛拿到自己的作答记录是一串01序列,他想知道自己一共答错了多少次,你能将这串序列转换为列表,使用count函数帮助牛牛统计一下吗?

x = input().split()
print(x.count('0'))

9.牛客网有一个打卡系统,记录了每个人这一个星期上班打卡的记录(以名字的形式)。牛牛想知道自己在这一个星期是第几个打卡的人,你用将这份名字记录转换为列表,然后使用index函数找到’NiuNiu’的位置吗?

x = input().split()
print(x.index('NiuNiu'))

10.Python有内置函数isalpha、isdigit、isspace可以分别判断字符串是否只包含字母、数字、空格,现在输入一个字符串,请分别输出这三个函数的判断结果。

x = input()
print(x.isalpha(),x.isdigit(),x.isspace(),sep='\n')

11.牛客网公布中奖信息了,中奖信息是一个很长的字符串,牛牛想知道自己的名字(’NiuNiu’)有没有出现在其中,你能帮助他使用字符串的find函数查找一下吗?

long_str = input('')
if 'NiuNiu' in long_str:
    print(long_str.find('NiuNiu'))
else:
    print(-1)

12.牛客网喜欢’Niu’这个词,各个地方的称号、标语都会出现。现在给你一定长字符串patten,你能使用count函数找到’Niu’在其中出现的次数吗?

patten = input()
print(patten.count('Niu'))

13.英文句子都是由单词之间通过空格间隔而组成,牛牛想知道一句英语句子里面包含有哪些单词,你能使用split函数将它们全部按照空格分割,记录进列表中吗,请输出列表。

print(input().split())

14.牛牛在和牛妹做一个游戏,牛牛给定了牛妹一些单词字符串,他想让牛妹把这些单词拼接成以空格间隔开的句子,很可惜牛妹Python没有学好,你能使用join函数帮帮她吗?

x = []
while True:
    y = input('')
    if y == '0':
        break
    x.append(y)

print(' '.join(x))

15.牛客网在录入用户名字信息发生了错误,所有的字符子串’ab’都被录成’a‘,运营同学急坏了。你能使用Python字符串的replace函数,将名字信息中的’a‘全部修改回’ab’吗?

x = input()
print(x.replace('a*','ab'))

16.牛客网的财务同学很苦恼,各个部门提交的资料中关于金额的小数保留简直是乱七八糟,你能使用round函数,帮助财务同学将输入数字的小数位修正为四舍五入保留至最多两位小数吗?(请不要使用字符串格式化输出保留小数位)

x = float(input())
print(round(x,2))

17.牛牛听说Python中有一个很神奇的函数eval(),只要输入的字符串是一个公式,它能够直接计算这个公式的值。现牛牛以字符串地形式输入一个公式,请你使用eval()计算结果。

x = eval(input())
print(x)
  1. 某公司内部报名年会活动,因为是匿名报名,有的同事可能偷偷”帮助”别人报名了,导致一个名字出现多次。后台营运同学希望你能用set函数将这些名字记录为一个集合,以到达去重的目的,请输出这些名字创建的集合,输出的时候使用sorted函数对集合排序。
print(sorted(list(set(input().split()))))

十一、面向对象

1.请定义一个函数cal(),该函数返回两个参数相减的差。输入第一个数字记录在变量x中,输入第二个数字记录在变量y中,将其转换成数字后调用函数计算cal(x, y),再交换位置计算cal(y, x)。

x = int(input())
y = int(input())
def cal(a,b):
    print(a - b)
cal(x,y)
cal(y,x)

2.兔子的数量以这样的方式增长:每个月的兔子数量等于它前一个月的兔子数量加它前两个月的兔子数量,即f(n)=f(n-1)+f(n-2)。假设第1个月的兔子有2只,第2个月的兔子有3只,你能使用递归的方法求得第n个月的兔子有多少只吗?

def x(y):
    if y == 1:
        return 2
    elif y == 2:
        return 3
    else:
        return x(y - 1) + x(y - 2)

print(x(int(input())))

3.球的体积公式为V=4πr²,请写一个函数,输入球的半径,返回球的表面积。球的半径如下:[1, 2, 4, 9, 10, 13],请输出这些半径下的表面积,π取math库的math.pi。

import math

def x(y):
   return 4*math.pi*(y**2)

for i in [1, 2, 4, 9, 10, 13]:
     print('%.2f'%x(i))

4.牛牛的Python老师为了更好地管理班级,利用一个类Student来管理学生,这个类包含了学生姓名(str)、学号(str)、分数(int)、每次作业等级(list[str])等信息。请你帮助牛牛的老师实现这样一个类,并定义构造方法实现初始化,定义打印函数实现打印学生的姓名、学号、分数、提交作业的次数、每次作业的等级。

class Student:
    def __init__(self, a, b, c, d):
        self.name = a
        self.number = b
        self.grade = c
        self.homework = d
        print("{}'s student number is {}, and his grade is {}. He submitted {} assignments, each with a grade of {}".format(
                self.name, self.number, self.grade, len(self.homework.split(' ')), self.homework))

name = input()
number = input()
grade = input()
homework = input()
student = Student(name, number, grade, homework)

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…结构)

class Employee:
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

    def printclass(self):
        try:
            print("{}'salary is {}, and his age is {}".format(self.name,self.salary,self.age))
        except:
            print("Error! No age")

employee = Employee(input(), input())
employee.printclass()
employee.age = input()
employee.printclass()

6.请为牛客网的员工创建一个Employee类,包括属性有姓名(name)、(salary),并设置初始化。同时该类包括一个方法printclass,用于输出类似’NiuNiu’s salary is 4000, and his age is 22’的语句。请根据输入的信息为Employee类创建一个实例e,调用hasattr方法检验实例有没有属性age,如果存在属性age直接调用printclass输出,否则使用setattr函数为其添加属性age,并设置值为输入后,再调用printclass输出。

class Employee(object):
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

    def printcalss(self):
        try:
            return ("{}'salary is {}, and his age is {}".format(self.name,self.salary,self.age))
        except:
            return ('Error! No age')

name, salary, age = input(), int(input()), int(input())

employee = Employee(name, salary)
print(hasattr(employee, 'age'))

employee.age = age
print(employee.printcalss())

7.请创建一个Coordinate类表示坐标系,属性有x和y表示横纵坐标,并为其创建初始化方法__init__。请重载方法__str__为输出坐标'(x, y)’。请重载方法__add__,更改Coordinate类的相加运算为横坐标与横坐标相加,纵坐标与纵坐标相加,返回结果也是Coordinate类。现在输入两组横纵坐标x和y,请将其初始化为两个Coordinate类的实例c1和c2,并将坐标相加后输出结果。

class Coordinate:
    def __init__(self,x,y):
        self.x = x
        self.y = y

    def __str__(self):
        return f'({self.x}, {self.y})'

    def __add__(self,other):
        return Coordinate(self.x + other.x, self.y + other.y)

x1,y1 = list(map(int,input().split()))
x2,y2 = list(map(int,input().split()))
c1 = Coordinate(x1,y1)
c2 = Coordinate(x2,y2)

print(c1+c2)

十二、正则表达

1.牛牛最近正在研究网址,他发现好像很多网址的开头都是’https://www’,他想知道任意一个网址都是这样开头吗。于是牛牛向你输入一个网址(字符串形式),你能使用正则函数re.match在起始位置帮他匹配一下有多少位是相同的吗?(区分大小写)

import re
url = input()
print(re.match('https://www',url).span())

2.牛牛翻看以前记录朋友信息的电话薄,电话号码几位数字之间使用-间隔,后面还接了一下不太清楚什么意思的英文字母,你能使用正则匹配re.sub将除了数字以外的其他字符去掉,提取一个全数字电话号码吗?

import re

num = input()
nums = re.sub(r'\D','', num)
print(nums)

3.牛牛记录电话号码时,习惯间隔几位就加一个-间隔,方便记忆,同时他还会在电话后面接多条#引导的注释信息。拨打电话时,-可以被手机正常识别,#引导的注释信息就必须要去掉了,你能使用正则匹配re.match将前面的数字及-信息提取出来吗,去掉后面的注释信息。

方法一
import re

num = input()
nums = re.match('[0-9|-]*', num)
print(nums.group())

方法二
nums = input().split('#')
print(nums[0])

牛客网Python篇入门编程习题

Original: https://blog.csdn.net/u013157570/article/details/126117297
Author: 漫步桔田
Title: 牛客网Python篇入门编程习题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/726679/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球