zoukankan      html  css  js  c++  java
  • ucass2021期末编程模拟题

    写在前面的话:

    题目来源:python123(选了一部分放上来)

    虽然过了系统评测,但因为评测平台的评测数据过弱,不可保证代码逻辑完美

    尽力使得代码算法最优,但由于题目设置的模糊性(不得不吐槽这些题目太烂了),为了保证代码尽可能涵盖最多可能性,使得算法未必针对数据最优(希望讲清楚了)

    说白了就是代码可以优化

    1.正整数的位数和逆序数

    1)编写代码,输入一个正整数,输出该正整数的位数和逆序数。

    1 a = input()
    2 b = a
    3 while a[-1]=='0':
    4     a = a[:-1]
    5 print("{}是{}位数,其逆序数为{}.".format(b,len(b),a[::-1]))
    (a[::-1]好像是一种蛮高级的颠倒字符串的方法)

    2.藏头露尾诗

    1)编写代码,分次输入 4 句诗的每一句,每句字数相等,分别输出每行头字符串和尾字符串。

    1 a = ''
    2 b = ''
    3 for i in range(4):
    4     c = input()
    5     a += c[0]
    6     b += c[-2]
    7 print(a)
    8 print(b)

    10.字符判定

    1)编写代码,输入单个字符,并根据以下规则进行处理:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

             如果输入的是一个数字字符,判定该数字的奇偶性;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

             如果输入的是一个小写字母,输出该字母对应的大写字母;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

             如果输入的是一个大写字母,输出该字母对应的小写字母;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

             如果输入的是其它字符,则输出“输入有误”。

     1 a = input()
     2 if "0"<=a<="9":
     3     b = ord(a)-48
     4     if b%2==0:
     5         print("偶数")
     6     else:
     7         print("奇数")
     8 elif "a"<=a<="z":
     9     print(chr(ord(a)-32))
    10 elif "A"<=a<="Z":
    11     print(chr(ord(a)+32))
    12 else:
    13     print("输入有误")

    11.起名器

    1)编写代码,输入名字长度(3或2),使用 random 模块随机生成一个姓名,随机数种子为 0,姓名第一个字从 surname 中选择,第二个字从 second 中选择,第三个字从 third 中选择。

     1 import random
     2 a = input()
     3 surname = '赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许'
     4 second = '中万斯近元伟丽利国士文连百宏可立成海'
     5 third = '隆智渝顺乐天杰夫煜兵思霆炜祺亮剀炫翔维瑞韬嘉林庆玮'
     6 random.seed(0)
     7 if a == "3":
     8     print(random.choice(surname)+random.choice(second)+random.choice(third))
     9 else:
    10     print(random.choice(surname)+random.choice(third))

    16.判断火车票座位

    1)编写代码,输入一个数字和一个字母组成的座位号,根据字母判断位置是窗口、中间还是过道。目前中国高铁窗口位置的字母是 'A' 和 'F',过道位置是 'C' 和  'D',中间位置是 'B'。每个车厢座位排数是1-17,输入时不区分字母大小写。根据输入判定座位的位置,当输入的数据不是一个合法的座位号时,输出“座位号不存在”。

     1 a = input()
     2 
     3 if len(a)==3:
     4     b = (ord(a[0])-48)*10+ord(a[1])-48
     5     if b>17 :
     6         print("座位号不存在")
     7     else:
     8         if a[-1]=="a" or a[-1]=="A" or a[-1]=="f" or a[-1]=="F":
     9             print("窗口")
    10         elif a[-1]=="c" or a[-1]=="C" or a[-1]=="D" or a[-1]=="d":
    11             print("过道")
    12         elif a[-1]=="b" or  a[-1]=="B":
    13             print("中间")
    14         else:
    15             print("座位号不存")
    16 elif len(a)==2:
    17     if ord(a[0])-48==0:
    18         print("座位号不存在")
    19     else:
    20         if a[-1]=="a" or a[-1]=="A" or a[-1]=="f" or a[-1]=="F":
    21             print("窗口")
    22         elif a[-1]=="c" or a[-1]=="C" or a[-1]=="D" or a[-1]=="d":
    23             print("过道")
    24         elif a[-1]=="b" or  a[-1]=="B":
    25             print("中间")
    26         else:
    27             print("座位号不存")
    28 else:
    29     print("座位号不存在")

    17.计算

    1)编写代码,输入一个正整数 n,输出 1-1/2+1/3-1/4+1/5+……+1/n 的和,结果保留两位小数,如果输入的不是正整数则给出相应提示。

     1 n = eval(input())
     2 if n <= 0 or type(n) != int:
     3     print("请输入正整数")
     4 else:
     5     sum = 0
     6     for i in range(n):
     7         j = i+1
     8         if j%2 != 0:
     9             sum += 1/j
    10         else:
    11             sum -= 1/j
    12     print("表达式的和为{:.2f}".format(sum))

    18.组合(排列)

    1)编写代码,输入一个正整数 N,输出集合 1~N 的所有 3 个元素的排列。

     1 n = eval(input())
     2 num = 0
     3 for x in range(1,n+1):
     4     for y in range(1,n+1):
     5         if y == x:
     6             continue
     7         for z in range(1,n+1):
     8             if z == x or z == y:
     9                 continue
    10             num += 1
    11             print("{}:{},{},{}".format(num,x,y,z))
    12 print("共有{}种排列".format(num))

    21.棋子回位

    1)假定一枚棋子在棋盘上的移动方向用’东南西北’来表示,每次移动的距离相等。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

    现在输入一个字符串,保存有该棋子的移动顺序,判断该棋子在执行完该步骤序列后能够回到起点。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

    字符串只有‘东‘’南‘’西‘’北’四种字符组成‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬,输出‘是’ 或者‘否’,分别代表是否回到起点。

     1 x = 0
     2 y = 0
     3 a = input()
     4 for i in a:
     5     if i == "":
     6         x += 1
     7     elif i == "":
     8         y -= 1
     9     elif i == "西":
    10         x -= 1
    11     else:
    12         y += 1
    13 if x==0 and y==0:
    14     print("")
    15 else:
    16     print("")

    22.数列求和

    1)编写代码,输入一个小于 10 的整数 n,计算形如 1 + 12 + 123 + 1234 + …… 算式的前 n 项的和。

     1 import math
     2 n = eval(input())
     3 sum = 0
     4 for i in range(1,n+1):
     5     m = 0
     6     for j in range(1,i+1):
     7         
     8         m += j*math.pow(10,i-j)
     9         
    10     sum += m
    11 print(int(sum))

    25.大小写转换

    1)编写代码,输入一个字符串,将其中大写字母转为小写,小写字母转为大写,其他字符保持原样,输出转换后的字符串。

     1 a = input()
     2 b = ""
     3 for i in range(len(a)):
     4     if "a"<a[i]<"z":
     5         b += chr(ord(a[i])-32)
     6     elif "A"<a[i]<"Z":
     7         b += chr(ord(a[i])+32)
     8     else:
     9         b +=a[i]
    10 print(b)

    26.从 1 到 n 整数中 1 的个数

    1)编写代码,输入一个正整数 n ,求出 1~n 的整数中 1 出现的次数。

    1 sum = 0
    2 n = eval(input())
    3 for i in range(1,n+1):
    4     a = str(i)
    5     for j in a:
    6         if j == "1":
    7             sum += 1
    8 print(sum)

    28.删除列表元素

    1)编写代码,输入位置,删除给定列表 [('a',3,5),('b',1,6),('c',0,3),('d',9,2),('e',5,1),('f',0,7),('g',6,8)] 中的指定位置元素,如果位置不存在,则输出“没有该元素”,然后对列表按每个元素中最后一项降序排序。

     1 ls = [('a',3,5),('b',1,6),('c',0,3),('d',9,2),('e',5,1),('f',0,7),('g',6,8)]
     2 #哈哈哈这个做法好恶心但是我好喜欢哈哈哈
     3 lt = [('g',6,8),('f',0,7),('b',1,6),('a',3,5),('c',0,3),('d',9,2),('e',5,1)]
     4 
     5 n = eval(input())
     6 if n > 6:
     7     print("没有该元素")
     8 else:
     9     m=ls.pop(n-1)
    10     print("删除后的列表为{}".format(ls))
    11     lt.remove(m)
    12 print("排序后的列表为{}".format(lt))

    29.操作表达式(操作算式)

    1)编写代码,输入形如 "3+5+2+16+8+2" 的算式,输出形如 "16.8.5.3.2.2" 的结果,结果里的数字是输入算式里数字的逆序。

     1 a = input()
     2 ls = []
     3 
     4 n = ""
     5 for i in a:
     6     if i == "+":
     7         ls.append(int(n))
     8         n = ""
     9     else:
    10         n += i
    11 ls.append(int(n))
    12 
    13 ls.sort(reverse=True)
    14 for i in range(len(ls)-1):
    15     print(ls[i],end=".")
    16 print(ls[-1])

    30.查找数列中重复数字

    1)编写代码,输入以逗号分隔的若干整数,以列表形式从小到大输出其中的重复数字

     1 a = input()
     2 ls = []
     3 l = []
     4 n = ""
     5 for i in a:
     6     if i == ",":
     7         ls.append(int(n))
     8         n = ""
     9     else:
    10         n += i
    11 ls.append(int(n))
    12 
    13 ls.sort()
    14 lt = set(ls)
    15 for i in lt:
    16     if ls.count(i) >=2 :
    17         l.append(i)
    18 print(l)

    31.人员信息处理

    1)编写代码,从键盘输入以空格分隔的一组人员的姓名、性别、年龄信息,每人一行,空行结束输入,分性别以列表形式输出人员信息(缺失性别不输出)。

     1 lb = [] 
     2 lg = []
     3 a = input()#输入一行
     4 while(a != ""):
     5     l = []
     6     m = ""
     7     for i in a:
     8         if i == " ":
     9             l.append(m)
    10             m = ""
    11         else:
    12             m += i
    13     l.append(m)
    14     
    15     if l[1]=="":
    16         lb.append(l)
    17     elif l[1]=="":
    18         lg.append(l)
    19     else:
    20         continue
    21     
    22     a = input() 
    23 if lb != []:
    24     print(lb)    
    25 if lg != []:
    26     print(lg)

    32.密码验证

    1)编写代码,从键盘输入列表形式的密码,根据下列规则对密码进行验证,输出符合规则的密码。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

             * 至少包含1个大写字母
             * 至少包含1个数字
             * 至少包含 $#@* 的一个字符
             * 密码长度最短为8位

     1 a = eval(input())
     2 for i in a:
     3     if len(i) < 8:
     4         continue
     5     x = 0
     6     y = 0
     7     z = 0
     8     for j in i:
     9         if "A"<=j<="Z":
    10             x = 1
    11         elif "1"<=j<="9":
    12             y = 1
    13         elif j == '$' or j == '#' or j == '@' or j == '*':
    14             z = 1
    15         else :
    16             continue
    17     if x*y*z != 0:
    18         print(i)

    34.求不重复元素的列表

    1)编写程序,从键盘输入一个的列表,输出去重(只保留第一次出现的元素)后的列表和重复的元素的个数。

     1 a = eval(input())
     2 b = a.copy()
     3 c = [] 
     4 num = 1
     5 for i in b:
     6     if a.count(i) > 1:
     7         num+=1
     8         c.append(i)
     9         while(a.count(i) >= 1):
    10             a.remove(i)
    11     elif a.count(i) == 1:
    12         c.append(i)
    13 print(c)
    14 print("重复元素有{}个".format(num))

    35.求两个列表的向量积

    1)编写程序,从键盘输入一个整数 n 作为向量的长度,然后输入 n 个整数,以逗号隔开,够成一个向量 x;再输入 n 个整数,以逗号隔开,构成另一个向量 y,计算向量 x 和 y 的內积。如果输入的向量长度和向量不匹配时,给出错误提示。向量的内积为两个向量的对应元素的乘积的和,计算公式如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

     1 def ls(a,lx):
     2     t = ""
     3     for i in a:
     4         if i == ",":
     5             lx.append(int(t))
     6             t = ""
     7         else:
     8             t += i
     9     lx.append(int(t))
    10     
    11 n = eval(input())
    12 a = input()
    13 b = input()
    14 lx = []
    15 ly = []
    16 ls(a,lx)
    17 ls(b,ly)
    18 if len(lx) != n or len(ly) != n:
    19     print("错误,向量对应元素数量不等于n。")
    20 else:
    21     sum = 0
    22     for i in range(n):
    23         sum += lx[i]*ly[i]
    24     print("x和y的内积是: {}".format(sum))

    36.职位津贴计算

    1)编写代码,输入员工编号,并根据给定的映射关系计算津贴总额,如果输入为空,则输出“请输入数据,例如:A01,B02”。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

    d1 = {'经理': 1000, '主管': 800, '职员': 500}
    d2 = {'经理': ['A01'], '主管': ['B01', 'B02'], '职员': ['C01', 'C02', 'C03']}
     1 d1 = {'经理': 1000, '主管': 800, '职员': 500}
     2 d2 = {'经理': ['A01'], '主管': ['B01', 'B02'], '职员': ['C01', 'C02', 'C03']}
     3 a = input()
     4 if a == "":
     5     print("请输入数据,例如:A01,B02")
     6 else:
     7     lx = []
     8     t = ""
     9     for i in a:
    10         if i == ",":
    11             lx.append(t)
    12             t = ""
    13         else:
    14             t += i
    15     lx.append(t)
    16     sum = 0 
    17     for i in lx:
    18         for j in d2:
    19             if i in d2[j]:
    20                 sum += d1[j]
    21     print("津贴总额为{}元".format(sum))

    37.字频降序‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

    1)编写代码,输入一个句子,对句子中字符的出现次数进行统计,然后将句子中的字符按频次降序进行输出。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

    2)运行结果如下图所示。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

     1 a = input()
     2 c = {}
     3 #get()方法语法:
     4 #dict.get(key, default=None)
     5 #key -- 字典中要查找的键。
     6 #default -- 如果指定键的值不存在时,返回该默认值。
     7 for i in a:
     8     c[i] = c.get(i,0) + 1
     9 d = list(c.items())
    10 # 将字典d按value的值进行排序    key=lambda x: x[1]  实现
    11 d.sort(key=lambda x:x[1],reverse=True)
    12 ls = []
    13 for i in d:
    14     ls.append(i[0])
    15 print(" - ".join(ls))

    补充:" ".join(x) :将列表转为字符串," "中参数确定间隔符

    39.水果统计

    1)编写代码,输入一行以空格分隔的水果名称,统计各类型水果的数量并按照数量从多到少进行输出。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

    2)运行结果如下图所示。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

     1 a = input()
     2 b = a.split(" ")
     3 c = {}
     4 #get()方法语法:
     5 #dict.get(key, default=None)
     6 #key -- 字典中要查找的键。
     7 #default -- 如果指定键的值不存在时,返回该默认值。
     8 for i in b:
     9     c[i] = c.get(i,0) + 1
    10 d = list(c.items())
    11 # 将字典d按value的值进行排序    key=lambda x: x[1]  实现
    12 d.sort(key=lambda x:x[1],reverse=True)
    13 
    14 for i in d:
    15     print("{}:{}".format(i[0],i[1]))

     

     
    星河滚烫,你是人间理想。
  • 相关阅读:
    点聚weboffice插件自定义菜单
    Delphi程序带参数运行
    64位系统下注册32位dll文件
    64位进程调用32位dll的解决方法
    memcached启动脚本以及telnet测试
    LSM树由来、设计思想以及应用到HBase的索引
    B树(B-Tree)的由来、数据结构、基本操作以及数据库索引的应用
    java读取utf8配置文件乱码
    设置某个ip对mysql服务器有权限,以及mysql定时备份
    《HBase实战》
  • 原文地址:https://www.cnblogs.com/becase/p/15686565.html
Copyright © 2011-2022 走看看