某农业学校python题(一)

1. 找数对

【问题描述】

输入一组数到列表nums,请找到列表中任意两个元素相加能够等于9的元素,形成一个元组,使其小数在前大数在后,如:(2,7), (1,8)。重复的元组元素只保留一个,结果按元组第一个元素从小到大顺序输出。

【样例输入】

numbers:3,4,5,7,2,8,1

【样例输出】

[(1, 8), (2, 7), (4, 5)]

【难点解析】可以一开始定义一个空列表Lst,然后每次将符合要求的,例如Lst.append((1,8))追加一个元组的方式(看清楚里面(1,8)的写法),把元组作为列表的元素插入列表。

nums = input("numbers:")
num_list = [int(i) for i in nums.split(',')]
temp_list = []
for i in num_list:
    for k in num_list:
        if i+k == 9:
            min_ = i if(k >= i) else k
            max_ = k if(k >= i) else i
            if (min_, max_) not in temp_list:
                temp_list.append((min_, max_))
temp_list = sorted(temp_list, key=lambda x: x[0])
print(temp_list)
2. 积最大的分解

【问题描述】从键盘输入一个正整数n(n>1),该正整数可以分解成两个正整数k1和k2之和(允许k1和k2相等)。请编写一个函数求使两个正整数的乘积最大的分解方案,并返回乘积max。
【输入形式】标准输入的一行表示正整数n
【输出形式】标准输出的一行表示最大乘积max,若输入的数据不合法(如:负整数、0或1),输出"illegal input"。
【样例输入】20
【样例输出】100
【样例说明】20=10 + 10,此时积最大,为100。

n = int(input())
if n <=1:
    print("illegal input")
else:
    a = n//2
    b = n-a
    print(a*b)
3. 翻译密码

【问题描述】翻译密码。为了保密,常不采用明文,而用密文,即按一定规则将字符转换为另一字符,收报人则按相反的规律转换得到原来的字符。本程序规则为:字母ascii码加5,其他字符不变,对原文进行加密,并显示密文。字母的最后5个加5不是字母了,处理规则为循环成前5个。比如“X”的密文为“C”。

【样例输入】

please input text:I love haha.
【样例输出】

N qtaj mfmf.

【样例说明】ord()函数主要用来返回对应字符的ascii码,chr()主要用来表示ascii码对应的字符

a=input('please input text:')
for S1 in a:
    if 65<=ord(S1)<=85 or 97<=ord(S1)<=117:
        n=ord(S1)+5
        new=chr(n)
    elif 86<=ord(S1)<=90 or 118<=ord(S1)<=122:
        n=ord(S1)-21
        new=chr(n)
    else:
        new=S1
    print(new,end="")
4. 找因子

【问题描述】

输入一个大于1的整数,返回一个列表,包含所有能够整除该整数的因子(不包含1和它本身),并且从小到大排序。如果这个数是素数,则输出“(整数) is prime”。
【样例输入】

number:6
【样例输出】

[2, 3]

【样例输入】

number:5
【样例输出】

5 is prime

a = eval(input('number:'))
list1 = []
for i in range(2,a//2+1):
    if a%i==0:
        list1.append(int(i))
        list1.append(int(a/i))
list1 = list(set(list1))
if len(list1) == 0:
    print('%s is prime'%a)
else:
    print(list1)
5. 11整除问题改

【问题描述】

1. 有如下结论:如果一个整数的奇数位上的数字之和与偶数位上的数字之和的差能被11整除,那么这个数能被11整除;(注:每个整数从个位开始计算位数;以123456为例,奇数位之和为6+4+2=12,偶数位之和为5+3+1=9)

请利用上述结论,任意给出一个n位正整数,输出其奇数位上数字之和,偶数位上数字之和,并判断其能否被11整数。


【输入形式】

任意输入一个正整数;

【输出形式】

按顺序输出一个奇数位之和、偶数位之和,输出最终的判断能否被11整除;

【样例输入】

 Please input a integer:654321

【样例输出】

9

12

FALSE

a = input('Please input a integer:')[::-1]
print(a)
ou = 0  # 偶数
ji = 0  # 奇数
for i in range(1, len(a)+1):
    if i % 2 == 0:
        ou += int(a[i-1])
    else:
        ji += int(a[i-1])
print(ji)
print(ou)
cha = ji-ou
if cha % 11 == 0:
    print('TRUE')
else:
    print('FALSE')
6. 读者第几次出现

【问题描述】

  涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。

【输入形式】

  输入的第一行包含一个整数n,表示涛涛的记录条数。

  第二行包含n个整数,依次表示涛涛的记录中每位读者的编号。

【输出形式】

  输出一行,包含n个整数,由空格分隔,依次表示每条记录中的读者编号是第几次出现。

【样例输入】

  5

  1 2 1 1 3

【样例输出】

  1 1 2 3 1

n = int(input())
a = input().split()
new = {i:0 for i in a}
ans = []
for i in a:
    new[i] += 1
    print(new[i], end=" ")
7. 找不同

【问题描述】

          9个同学一起做游戏,每个人报一个[1,20]区间上的正整数,请你编程求出有多少个不同的数。

【输入形式】

        输入1行,输入9个[1,20]区间上的整数,每个整数之间以空格为分隔符

【输出形式】

        输出1个数,表示输入的9个数中不同数的个数。

【样例输入】

        1 2 3 3 2 2 7 8 9

【样例输出】

        6

【样例说明】可以使用字符串的split()方法将一个字符串按照指定字符切割成字符列表

list1 = input().split()
list1 = list(set(list1))
print(len(list1))
8. 餐厅服务评价

【问题描述】假设有10个学生被邀请来给餐厅的饮食和服务质量打分,分数划分为1~9这9个等级(1表示最低分,9表示最高分)编程统计输出餐饮服务质量调查结果。

【输入形式】输入1行,输入10个1到9之间的整数,每个整数之间以空格为分隔符

【输出形式】输出9行,每行两个数(以空格为分隔符),一个为1到9之间的整数,表示等级;一个为这个等级对应的票数。

【样例输入】

        1 2 3 3 3 2 2 7 8 9

【样例输出】

        1 1

        2 3

        3 3

        4 0

        5 0

        6 0

        7 1

        8 1

        9 1

list1 = input().split()
list1 = [int(i) for i in list1]
dic1 = {}
for i in range(1, 10):
    dic1[i] = 0
for i in list1:
    if i in dic1:
        dic1[i] = dic1[i]+1
list2 = dict.items(dic1)
for i in list2:
    print(i[0], i[1])
9. 字母计数

【问题描述】

输入字符串,输出字符串中出现次数最多的字母及其出现次数。如果有多个字母出现次数一样,则按字符从小到大顺序输出字母及其出现次数。
【输入形式】

一个字符串。
【输出形式】

出现次数最多的字母及其出现次数

【样例输入】

abcccd
【样例输出】

c 3

str1 = str(input())
dict1 = {}
for i in str1:
    dict1[i] = dict1.get(i, 0) + 1
temp = max(dict1.values())
for k, v in dict1.items():
    if v == temp:
        print(k, v)
10. 小玉游泳

【问题描述】

        小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游2米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的98%。现在小玉想知道,如果要游到距离x米的地方,她需要游多少步呢。请你编程解决这个问题。

【输入形式】输入一个数字(不一定是整数,小于100m),表示要游的目标距离。。

【输出形式】输出一个整数,表示小玉一共需要游多少步。。

【样例输入】4.3

【样例输出】3

a = eval(input())
f = 2
n = 1
wum = 0
while f < a:
    f = f+2*(0.98**n)
    n = n+1
print(n)

你可能感兴趣的:(python)