Python语言基础与应用 北京大学期末编程考试

1、两组数的差异
题目内容:
给出两组相同数量的整数,求这两组整数的差异估算,即:对应数差值平方之和。
第一组为a1, a2…an
第二组为b1, b2…bn
求 (a1-b1)**2+(a2-b2)**2+…+(an-bn)**2

输入格式:两行,每行是一组整数,用空格隔开。

输出格式:一个整数。

a=list(map(int,input().split()))
b=list(map(int,input().split()))
Sum=0
for i in range(len(a)):Sum+=(a[i]-b[i])**2
print(Sum)

2、回文字符串
题目内容:
给定一个字符串,判断它是否是回文字符串(即类似于peep, 12321这样的对称字符串),如果是输出True,不是则输出False。
判断过程中假定只考虑字母和数字字符,而且忽略字母的大小写和其它符号(如空格、标点符号等)。

输入格式:共一行,为一个字符串。

输出格式:共一行,为True或False。

a=input()
b=[]
for i in a:
    if 48 <= ord(i) <= 57 or 97 <=ord(i) <=122:b.append(i)
    elif 65<=ord(i)<=90:b.append(chr(ord(i)+32))
i,j=0,len(b)-1
while i<=j:
    if b[i]!=b[j]:
        print(False)
        break
    i+=1
    j-=1
else:print(True)

3、0的组合
题目内容:
给定一个包含若干个整数(可能存在重复整数)的列表,判断其中是否存在三个元素a,b,c,使得a+b+c=0?找出所有满足条件且不重复的这样的三个数的组合。

输入格式:共一行,列表中元素以空格隔开。

输出格式:共一行,为不重复组合的个数,不存在这样的组合就输出0

nums=list(map(int,input().split()))
nums.sort()
res = []
i = 0
for i in range(len(nums)):
    if i == 0 or nums[i] > nums[i - 1]:
        if nums[i] > 0: break
        l = i + 1
        r = len(nums) - 1
        while l < r:
            s = nums[i] + nums[l] + nums[r]
            if s == 0:
                res.append([nums[i], nums[l], nums[r]])
                l += 1
                r -= 1
                while l < r and nums[l] == nums[l - 1]:
                    l += 1
                while r > l and nums[r] == nums[r + 1]:
                    r -= 1
            elif s > 0:
                r -= 1
            else:
                l += 1
print(len(res))

4、乘积的列表
题目内容:
给定一个包含若干个整数的列表alist,要求返回输出列表blist,blist中的元素为除与alist对应位置上的元素之外其余各元素的乘积。

输入格式:共一行,列表中的元素以空格隔开。

输出格式:共一行,为一个列表。

a=list(map(int,input().split()))
b=[];Sm=1
for i in range(len(a)):
    for j in range(len(a)):
        if j!=i:Sm*=a[j]
    b.append(Sm)
    Sm=1
print(b)

5、破译密码
题目内容:
A国情报局抓获敌国间谍一名,从间谍身上搜出了若干密电,在严刑逼供之下,间谍说出了密电加密方法:将明文电报(仅由大写字母构成)中的所有字母均替换为字母表中向后看的第n个字母,如果超过Z,则从A继续数,这样就得到了密文,比如ATTACK,向后看第2个字母,就加密为CVVCFM。
可还没等到间谍说出加密用的密钥(数字n),就被卧底开枪打死,间谍临死前在地板上画了BYE三个字母。
情报局长看着一条条密电发了愁,但机智的你已经发现,原来间谍在告诉我们,所有密电的明文都以BYE结尾!
请编写程序破译这些密电吧!

输入格式:共一行字符串,全部由大写字母构成的密文。

输出格式:共一行字符串,破译后的明文。

a=input()
s=''
n=ord(a[-1])-69 if ord(a[-1])>69 else ord(a[-1])-65+90-69+1
for i in a:
    if ord(i)-n<65:
        s+=chr(ord(i)-n+26)
    else:s+=chr(ord(i)-n)
print(s)
发布了70 篇原创文章 · 获赞 15 · 访问量 4301

猜你喜欢

转载自blog.csdn.net/Heart_for_Ling/article/details/103505793