1.
从标准输入流(控制台)中读入数据 n
、m
与 n
行形式如 A B C D
的参数。你需要计算一个 n * m
的矩阵,矩阵元素计算公式为
其中 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
序列里面的元素作为 key
,default_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))