Python(第十二周)

1.sdut-使用函数输出Fibonacci数列的值与指定范围内Fibonacci数值的个数 (10 分)

设计函数实现:计算第n项Fibonacci数列数值,并求出两正整数a和b所组成的闭区间[a,b](0<a<b≤100000)之间的所有Fibonacci数的数目。

Fibonacci数列,任一项数字是前两项的和(最开始两项均定义为1)的数列, fib(0)=fib(1)=1。

函数接口定义:

fib(n)       #函数1
fibs(a, b)  #函数2

fib(n):返回第n项Fibonacci数;

fibs(a, b):返回 [a, b] 中的所有Fibonacci数组成的列表。

n、a、b均为正整数。

裁判测试程序样例:


/* 请在这里填写答案 */


n,a,b=input().split()
n=int(n)
a=int(a)
b=int(b)
fb=fib(n)
print("fib({0}) = {1}".format(n,fb))
fiblist=fibs(a, b)
print(len(fiblist))

输入样例:
在这里给出一组输入。例如:

6 20 100
结尾无空行

输出样例:
在这里给出相应的输出。例如:

fib(6) = 13
4
结尾无空行

def fib(n):
    f1 = 1
    f2 = 1
    for i in range(n):
        f1, f2 = f2, f1 + f2
    return f1


def fibs(a, b):
    l = list()
    i = 0
    while True:
        if a <= fib(i) <= b:
            l.append(fib(i))
        if fib(i) > b:
            break
        i += 1
    return l

2.根据三角形三边长求面积,不能合法构成三角形则抛出异常(高教社,《Python编程基础及应用》习题12-4) (10 分)

下述程序从键盘读入三角形的三边长(小数),然后使用海伦公式计算三角形的面积。如果输入的三边长可以构成合法的三角形,输出计算得到的三角形面积,否则输出"无法构成合法三角形"。

请将下述程序补充完整,请注意该程序中的错误输出依赖于Python的异常处理机制。

函数接口定义:
请将代码补全,完成相应的功能。
此处缺失的代码不是一个函数。
裁判测试程序样例:

from math import sqrt

def Area(a,b,c):
    p=(a+b+c)/2
    s=sqrt(p*(p-a)*(p-b)*(p-c))
    return s

ans=0
a = float(input())
b = float(input())
c = float(input())

#在此处补全代码
#try .... 
#...
#...

except ValueError:
    print("无法构成合法三角形")
else:
    print("%.2f" % ans)

输入样例:
3
3.1
10.8
结尾无空行

输出样例:
无法构成合法三角形
结尾无空行

try:
    if a+b>c and a+c>b and b+c>a:
        ans=Area(a,b,c)
    else:
        raise ValueError

3.sdut-查字典 (10 分)

遇到单词不认识怎么办? 查字典啊!

已知字典中有n个单词,现有m个不认识的单词,询问这m个单词是否出现在字典中,如果在字典中就输出其含义,如果不在字典中,就输出:Not found!

输入格式:
含有多组测试用例。

第一行输入n,m (n>=0&&n<=100000&&m>=0&&m<=100000)分别是字典中存在的n个单词,和要查询的m个单词.

紧跟着n行,代表字典中存在的单词及其解释(含义);

然后m行,要查询的m个单词。

若n=0&&m=0 程序结束

输出格式:
对于待查询的单词,若在字典中存在则输出其解释(含义),不存在输出Not found!

输入样例:
3 2
red: having the colour of blood or fire
green:having the colour of grass or the leaves of most plants and trees
blue:having the colour of a clear sky or the sea/ocean on a clear day
blue
abcded
0 0
结尾无空行

输出样例:
having the colour of a clear sky or the sea/ocean on a clear day
Not found!
结尾无空行

while True:
    n, m = map(int, input().split(" "))
    if n == 0 and m == 0:
        break

    d = dict()
    for i in range(n):
        keys, values = input().split(":")
        d[keys] = values
    for j in range(m):
        word = input()
        if word in d.keys():
            print(d[word])
        else:
            print('Not found!')

4.集合添加元素 (20 分)

向集合中加入单一元素,可以使用.add() 方法操作,该操作将向集合中加入。 应用你的知识帮助你的好朋友小明,小明喜欢集邮,他有大量的来自不同国家的邮票,他决定数一下他的集邮册中共有来自多少个不同国家的邮票,他请你帮忙,你一个一个的把N张邮票拿出来,找出共有多少个不重复的国家。

输入格式:
第一行输入一个整数N,表示所有邮票的数目‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

接下来的N行,每行输入一张邮票来自哪一个国家的名字

输出格式:
在一行中输出不重复的国家的数量。

输入样例:
7
UK
China
USA
France
New Zealand
UK
France
结尾无空行

输出样例:
5

n = eval(input())
s = set()
for i in range(n):
    s.add(input())
print(len(s))

5.集合应用–列表 (20 分)

集合是一个无序的、没有重复元素的数据类型,在输出或转为序列类型时,其元素位置随机出现。

李白是一个社区大学的老师,一天,他让学生小明计算一下温室里植物的平均高度。‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬ 平均高度 = 不同高度的和 / 不同高度的数量

输入格式:
输入N 个用空格分隔的植物的高度

输出格式:
在一行内输出植物的平均高度,保留小数点后3位

输入样例:
161 182 161 154 176 170 167 171 170 174
结尾无空行

输出样例:
169.375

n = set(map(int, input().split(" ")))
print('{:.3f}'.format(sum(n) / len(n)))

6.字典查询1–查询省会 (30 分)

总理有诗云:两湖两广两河山,五江云贵福吉安,四西二宁青甘陕,还有内台北上天。 中国各省、直辖市、自治区和特别行政区的字典数据如下:

capitals = {‘湖南’:‘长沙’,‘湖北’:‘武汉’,‘广东’:‘广州’,‘广西’:‘南宁’,‘河北’:‘石家庄’,‘河南’:‘郑州’,‘山东’:‘济南’,‘山西’:‘太原’,‘江苏’:‘南京’,‘浙江’:‘杭州’,‘江西’:‘南昌’,‘黑龙江’:‘哈尔滨’,‘新疆’:‘乌鲁木齐’,‘云南’:‘昆明’,‘贵州’:‘贵阳’,‘福建’:‘福州’,‘吉林’:‘长春’,‘安徽’:‘合肥’,‘四川’:‘成都’,‘西藏’:‘拉萨’,‘宁夏’:‘银川’,‘辽宁’:‘沈阳’,‘青海’:‘西宁’,‘海南’:‘海口’,‘甘肃’:‘兰州’,‘陕西’:‘西安’,‘内蒙古’:‘呼和浩特’,‘台湾’:‘台北’,‘北京’:‘北京’,‘上海’:‘上海’,‘天津’:‘天津’,‘重庆’:‘重庆’,‘香港’:‘香港’,‘澳门’:‘澳门’}

设计程序,接收用户输入的省、直辖市、自治区和特别行政区名称,输出对应的省会名称,当输入错误时输出“输入错误”。

输入格式:
第一行输入一个整数n

接下来输入n行,每行输入一个省、直辖市、自治区或特别行政区名称‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输出格式:
输出对应的省会名称

输入样例1:
2
新疆
北京

输出样例1:
乌鲁木齐
北京

输入样例1:
1
美国

输出样例1:
输入错误

capitals = {
    
    '湖南': '长沙', '湖北': '武汉', '广东': '广州', '广西': '南宁', '河北': '石家庄', '河南': '郑州', '山东': '济南', '山西': '太原', '江苏': '南京',
            '浙江': '杭州', '江西': '南昌', '黑龙江': '哈尔滨', '新疆': '乌鲁木齐', '云南': '昆明', '贵州': '贵阳', '福建': '福州', '吉林': '长春',
            '安徽': '合肥', '四川': '成都', '西藏': '拉萨', '宁夏': '银川', '辽宁': '沈阳', '青海': '西宁', '海南': '海口', '甘肃': '兰州', '陕西': '西安',
            '内蒙古': '呼和浩特', '台湾': '台北', '北京': '北京', '上海': '上海', '天津': '天津', '重庆': '重庆', '香港': '香港', '澳门': '澳门'}
n = eval(input())
for i in range(n):
    s = input()
    if s in capitals.keys():
        print(capitals[s])
    else:
        print("输入错误")

7.字典应用–用户登录 (30 分)

有字典如下: dic = {‘admin’:‘123456’,‘administrator’:‘12345678’,‘root’:‘password’} 实现用户输入用户名和密码,当用户名与密码和字典中的键值对匹配时,显示“登录成功”,否则显示“登录失败”,登录失败时允许重复输入三次。

输入格式:
在两行中分别输入用户名和密码

输出格式:
“登录成功"或"登录失败”

输入样例:
admin
12345678
admin
123456
结尾无空行

输出样例:
登录失败
登录成功

dic = {
    
    'admin': '123456', 'administrator': '12345678', 'root': 'password'}

for i in range(3):
    user = input()
    p = input()
    if user in dic.keys() and p == dic[user]:
        print("登录成功")
        break
    else:
        print("登录失败")

8.列表操作 (10 分)

输入一个1-100之间的正整数 n, 以 n 为随机数种子随机生成一个不大于 n 的正整数 m 。 生成一个包含元素为 1,2,3……n 的列表 ls,在列表 ls 中删除值为 m 的整数倍的元素,在两行中输出原始列表和删除 m 倍数后的列表。

输入格式:
输入一个1-100之间的正整数 n

输出格式:
两行,每行一个列表

输入样例:
在这里给出一组输入。例如:

20
结尾无空行
输出样例:
在这里给出相应的输出。例如:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
[1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19]
结尾无空行

import random

n = eval(input())
ls = list()
for i in range(1, n + 1):
    ls.append(i)
print(ls)

random.seed(n)
m = random.randint(1, n)
i = 1
while True:
    if m * i > n:
        break
    else:
        if m * i in ls:
            ls.remove(m * i)
    i += 1
print(ls)

9.奇特的四位数 (10 分)

一个四位数,各位数字互不相同,所有数字之和等于6,并且这个数是11的倍数。 满足这种要求的四位数有多少个?各是什么?

输入格式:
该题目没有输入

输出格式:
第一行输出符合条件的数字个数

第二行以列表形式输出所有满足条件的四位数,列表元素按由小到大顺序排列

输入样例:
在这里给出一组输入。例如:

结尾无空行
输出样例:
在这里给出相应的输出。例如:

6
[1023, 1320, 2013, 2310, 3102, 3201]

ls = list()
for i in range(1000, 10000):
    if sum(list(map(int, str(i)))) == 6 and i % 11 == 0 and len(str(i)) == len(set(str(i))):
        ls.append(i)
print(len(ls))
print(ls)

10.打印友好数 (3 分)

kekao 定义了一种数,叫做友好数。

对于友好数的定义是这样的:“对于一个正整数a,若a的每位数字加和为偶数,则a是一个友好数”。

已知区间l, r,求区间内所有的友好数。

输入格式:
输入两个正整数l,r 输入数据保证1<l<r<10^6

输出格式:
输出区间[l,r]中所有的友好数,友好数中间以空格间隔,若不存在友好数,输出0

输入样例:
在这里给出一组输入。例如:

3 5
结尾无空行
输出样例:
在这里给出相应的输出。例如:

4
结尾无空行

def fun(x):
    sum = 0
    while x > 0:
        sum += x % 10
        x = x // 10
    return sum


l, r = map(int, input().split(" "))
flag = 0
s = ''
for i in range(l, r + 1):
    if fun(i) % 2 == 0:
        s += str(i)+' '
        flag = 1
if flag == 0:
    print(flag)
else:
    print(s.rstrip())

猜你喜欢

转载自blog.csdn.net/Anemia_/article/details/121410554