python 牛客学习记录(二)

描述

牛牛和牛妹一起玩密码游戏,牛牛作为发送方会发送一个4位数的整数给牛妹,牛妹接收后将对密码进行破解。

破解方案如下:每位数字都要加上3再除以9的余数代替该位数字,然后将第1位和第3位数字交换,第2位和第4位数字交换。

请输出牛妹破解后的密码。

a=int(input())

l1=a//1000
l2=a//100%10
l3=a//10%10
l4=a%10

listt1=[l1,l2,l3,l4]
listt2=[]
for i in listt1:
    j= (i+3)%9
    listt2.append(j)
listt2[0],listt2[2]=listt2[2],listt2[0]
listt2[1],listt2[3]=listt2[3],listt2[1]  
print(listt2[0],listt2[1],listt2[2],listt2[3],sep='')

描述

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

stack = [1, 2, 3, 4, 5]
a=int(input())
for i in range(2):
    stack.pop()
    print(stack)
stack.append(a)
print(stack)

描述

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

queue = [1, 2, 3, 4, 5]
a=int(input())
for i in range(2):
    queue.pop(0)
    print(queue)
queue.append(a)
print(queue)

描述

创建一个列表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[0:2])
print(group_list[1:4])
print(group_list[3:])

描述

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

x,y=input().split()
print(x==y)

描述

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

x,y=input().split()
x=int(x)
y=int(y)
print(x>y)
print(x

描述

牛牛在门头沟大学学习,一学年过去了,需要根据他的成绩计算他的平均绩点,假如绩点与等级的对应关系如下表所示。请根据输入的等级和学分数,计算牛牛的均绩(每门课学分乘上单门课绩点,求和后对学分求均值)。

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

sum_points = 0
sum_score = 0
while True:
    l = input()
    if l=='False':
        break
    p = float(input())
    sum_points += p
    sum_score += score[l]*p
   
print('{:.2f}'.format(sum_score/sum_points))

描述

牛牛正在做矩阵运算,他知道n个矩阵相加,就是将矩阵中每个位置的元素都乘上n。现有一个矩阵\left[ \begin{matrix} 1 & 2 &3\\ 4 & 5 & 6\\ 7 & 8 & 9 \end{matrix} \right]⎣⎡​147​258​369​⎦⎤​,请使用list记录该矩阵,对于牛牛输入的数字n,输出n个该矩阵相加的结果。

matrix=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
n=int(input())
for i in range(len(matrix)):
    for j in range(len(matrix[i])):
        matrix[i][j]=matrix[i][j]*n
print(matrix)

描述

正在学习英语的牛妹笔记本上准备了这样一个字典:{'a': ['apple', 'abandon', 'ant'], 'b': ['banana', 'bee', 'become'], 'c': ['cat', 'come'], 'd': 'down'}。

请你创建这样一个字典,对于牛妹输入的字母,查询有哪些单词?

ndict = {'a': ['apple', 'abandon', 'ant'], 'b': ['banana', 'bee', 'become'], 'c': ['cat', 'come'], 'd': 'down'}
a=input()
if a in ndict:
    print(' '.join(i for i in ndict[a]))

描述

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

sen=[]
while True:
    word = input()
    if word=='0':
        break
    else:
        sen.append(word)
print(' '.join(j for j in sen))

描述

请为牛客网的员工创建一个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:
            return("{}'salary is {}, and his age is {}".format(
                self.name, self.salary, self.age
            )) 
        except:
            return("Error! No age")


name = input()
salary = int(input())
employee = Employee(name, salary)
print(employee.printclass())
employee.age = int(input())
print(employee.printclass())

描述

请为牛客网的员工创建一个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:
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

    def printclass(self):
        return "{}'salary is {}, and his age is {}".format(
            self.name, self.salary, self.age
        )


name = input()
salary = int(input())
employee = Employee(name, salary)
print(hasattr(employee, "age"))
age = int(input())
setattr(employee, "age", age)
print(employee.printclass())

描述

请创建一个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 ("{},{}".format(self.x, self.y))

    def __add__(self, other):
        return (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)

描述

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

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

你可能感兴趣的:(笔记,学习)