0
点赞
收藏
分享

微信扫一扫

Day3

1.

从标准输入流(控制台)中读入数据 nm 与 n 行形式如 A B C D 的参数。你需要计算一个 n * m 的矩阵,矩阵元素计算公式为

Day3_字符串

其中 M[i][j] 为所求矩阵中 i 行 j 列的元素,A[i]B[i]C[i] 与 D[i] 是输入的参数。计算出结果后将矩阵打印到标准输出流(控制台)中。

测试数据:

n=2

m=3

A,B,C,D =2 3 1 10

A,B,C,D =4 5 2 11

ps:这道题看了半天,公式没太理解。后面读了下半部分题目就很好理解了;

利用两重循环,i=0,j=0的时候,直接输出C[0],当j=1的时候,计算公式=(A[0]*M[0][0]+B[0])%D[0];

i,j的大小由输入的矩阵长宽决定,就是n行和m列

n = int(input())
m = int(input())
for i in range(n):
    a,b,c,d = map(int,input().split())
    num = 0
    for j in range(m):
        if j == 0:
            num = c
            print(num,end='')
            print(' ',end='')#每次输出都带个空格
        else:
            num = (a * num + b) % d
            print(num,end='')
            print(' ',end='')
    if i < n - 1:  #处理换行
     print()

2.要求:输入一个二进制字符串,转换为十进制(扩展为进制数之间随意转换)

ps:这里使用的是format转换数据格式处理的

还可以使用内置函数,比如hex()bin()oct()

def convert_base(decimal_number,base):
    #先把数据处理为十进制,int默认就是十进制
    decimal_number = int(decimal_number)
    #输出二进制
    if base == '2':
        # 将十进制转换为二进制(手动格式化)b代表十六进制
        binary_number = format(decimal_number, 'b')
        print(binary_number)
    #输出八进制
    elif base == '8':
        octal_number = format(decimal_number, 'o')
        print(octal_number)
    #输出十六进制
    elif base == '16':
        hex_number = format(decimal_number, 'x')
        print(hex_number)
    else:
        print("输入的进制不正确")
convert_base('1010101','2')

3.请在 solution.py 里完善代码,实现 create_dict 函数功能。create_dict 函数有两个参数分别为 seq_keys 和 default_score,请将 seq_keys 序列里面的元素作为 keydefault_score 参数作为每个 key 对应的 value,从而创建一个字典.

solution.py:

def create_dict(seq_keys: tuple, default_score: int) -> dict:
    """
    :param seq_keys: The tuple sequence of strings
    :param default_score: The second input parameters
    :return: A new dict be created by two parameters
    """
    # write your code here
    dict = {}
    for i in range(len(seq_keys)):
        dict[seq_keys[i]] = default_score
    return dict

main.py:

import sys
from solution import create_dict

input_path = sys.argv[1]
with open(input_path, 'r', encoding = 'utf-8') as f:
    seq_keys = eval(f.readline())
    default_score = eval(f.readline())
print(create_dict(seq_keys, default_score))

4.在本题中,需要你设计一个简单的字符串类 MString,最后我们会调用该类中的 isEquivalent() 来判断两个字符串是否相等。

mstring.py

class MString:
    def __init__(self, chars: list): #构造函数,接收一个chars参数
        # write your code here
        self.chars = chars   #类属性
    def isEquivalent(self, ms: 'MString'):
        # write your code here
        flag = True
        if len(self.chars) == len(ms.chars):
            for i in range(len(self.chars)):
                if self.chars[i] == ms.chars[i]:
                    flag = True
                else:
                    flag = False
        else:
            flag = False
        return flag

main.py

import sys
from mstring import MString

with open(sys.argv[1], 'r') as f:
    s1 = [*f.readline()]
    s2 = [*f.readline()]
ms1 = MString(s1[:-1])
ms2 = MString(s2)
if ms1.isEquivalent(ms2):
    print("These two strings are equivalent")
else:
    print("These two strings are inequivalent")

5.get_sum 函数接收一个数组参数 nums。请用 lambda 函数为 get_sum 函数传入两个未知数 x 和 y,并将这个 lambda 函数作为 get_sum 函数的返回值,对于 get_sum 接收的参数 nums,如果数组 nums 的长度为偶数,则返回 x 倍的 nums 元素总和,如果数组 nums 的长度为奇数,则返回 -y 倍的 nums 元素总和。测试数据:[1, 2, 3, 4]  2  3

solution.py:

def get_sum(nums: list):
    # Write your code here.
    if len(nums) % 2 == 0 :
        return lambda x,y : sum(nums) * x
    else:
        return lambda x,y : sum(nums) * -y

main.py:

import sys
from solution import get_sum
from judge import use_lambda_function

input_path = sys.argv[1]
with open(input_path, 'r', encoding='utf-8') as f:
    nums = eval(f.readline())
    x, y = map(eval, f.readline().split())

temp_function = get_sum(nums)
if not use_lambda_function(temp_function):
    raise Exception("Lambda function is not used.")

print(temp_function(x, y))

举报

相关推荐

Python Day3

QT DAY3

Qt(day3)

Leetcode Day3

PAT DAY3

JS DAY3

【C语言】day3

AJAX 入门 day3

0 条评论