笔试题目练习-python
以下内容包含笔试练习库的题目和代码,题目来自牛客网,仅供参考。
# coding = utf-8 import sys def test1(): """ 题目描述:计算字符串最后一个单词的长度,单词以空格隔开。 输入描述:一行字符串,非空,长度小于5000。 输出描述:整数N,最后一个单词的长度。 示例1 输入 hello world 输出 5 ''' :return: None """ str=sys.stdin.readline() lis = str.split() print(len(lis[-1])) def test2(): ''' 题目描述写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。 输入描述:输入一个有字母和数字以及空格组成的字符串,和一个字符。 输出描述:输出输入字符串中含有该字符的个数。 示例1 输入 ABCDEF A 输出 1 ''' str1 = input().lower() str2 = input().lower() print(str1.count(str2)) def test3(): """ 题目描述:明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。 Input Param n 输入随机数的个数 inputArray n个随机整数组成的数组 Return Value OutputArray 输出处理后的随机整数 注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。 输入描述:输入多行,先输入随机整数的个数,再输入相应个数的整数 输出描述:返回多行,处理后的结果 示例1 输入 11 10 20 40 32 67 40 20 89 300 400 15 输出 10 15 20 32 40 67 89 300 400 :return: None """ # count = int(input()) # lis = [] # for i in range(count): # tmp = int(input()) # lis.append(tmp) # lis = list(set(lis)) # lis.sort() # for tmp in lis: # print(tmp) # while True: try: num = [] n = int(input()) for i in range(n): tmp = int(input()) if tmp not in num: num.append(tmp) num.sort() for i in num: print(i) except: break # import sys # while True: # try: # numbers = [] # n = int(sys.stdin.readline().strip()) # for i in range(n): # numbers.append(int(sys.stdin.readline().strip())) # numbers.sort() # temp = [] # for i in numbers: # if i not in temp: # temp.append(i) # for i in temp: # print(i) # except: # break while True: try: numbers = [] n = int(input().strip()) for i in range(n): tmp = int(input().strip()) if tmp not in numbers: numbers.append(tmp) # numbers = list(set(numbers)) numbers.sort() for i in numbers: print(i) except: break def test3(): """ 题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输出描述:输出到长度为8的新字符串数组 示例1 输入 abc 123456789 输出 abc00000 12345678 90000000 :return: None """ while True: try: strs = [] for i in range(2): strs.append(input()) for s in strs: while len(s) >= 8: print(s[:8]) s = s[8:] if 0 < len(s) < 8: print(s + '0' * (8 - len(s))) except: break def test4(): """ 题目描述 写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 ) 输入描述: 输入一个十六进制的数值字符串。 输出描述: 输出该数值的十进制字符串。 示例1 输入 0xA 输出 10 :return: """ while True: try: h = input() if len(h) > 0: print(int(h, 16)) except: break def test5(): """ 题目描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 ) 最后一个数后面也要有空格 详细描述: 函数接口说明: public String getResult(long ulDataInput) 输入参数: long ulDataInput:输入的正整数 返回值: String 输入描述: 输入一个long型整数 输出描述: 按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。 示例1 输入 180 输出 2 2 3 3 5 :return: """ while True: try: l = int(input()) i = 2 while l != 1: if l%i == 0: print(i, end=' ') l = l/i else: i+=1 except: break def test6(): """ 题目描述 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。 输入描述: 输入一个正浮点数值 输出描述: 输出该数值的近似整数值 示例1 输入 复制 5.5 输出 复制 6 :return: """ while True: try: f = float(input()) f += 0.5 print(int(f)) except: break def test7(): """ 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。 题目描述 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。 输入描述: 先输入键值对的个数 然后输入成对的index和value值,以空格隔开 输出描述: 输出合并后的键值对(多行) 示例1 输入 4 0 1 0 2 1 2 3 4 输出 0 3 1 2 3 4 :return: """ while True: try: d = {} num = int(input()) for i in range(num): tmp = input() # tmp = sys.stdin.readline() k, v = map(int, (tmp.split())) # k, v = tmp.split() # k = int(k) # v = int(v) # d[k] = d.setdefault(k, 0) + v if k in d: d[k] = d[k] + v else: d[k] = v for i in sorted(d.keys()): print(i,d[i]) except: break def test8(): """ 题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺序,返回一个不含重复数字的新的整数 示例1 输入 9876673 输出 37689 :return: """ num = input() num = ''.join(num[::-1]) print(num) lis = [] # lis = list(num[::1]) # print(lis) # lis = list(set(lis)) for i in num: if i not in lis: lis.append(i) print(lis) output = ''.join(lis[::1]) print(output) def test9(): """ 题目描述 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。 输入描述: 输入N个字符,字符在ACSII码范围内。 输出描述: 输出范围在(0~127)字符的个数。 示例1 输入 abc 输出 3 :return: """ while True: try: acs = input() # chars = set() chars = [] for a in acs: # if 0 <= ord(a) <= 127: # chars.add(a) if a not in chars: chars.append(a) chars = ''.join(chars[::1]) print(len(chars)) except: break def test11(): """ 题目描述 描述: 输入一个整数,将这个整数以字符串的形式逆序输出 程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001 输入描述: 输入一个int整数 输出描述: 将这个整数以字符串的形式逆序输出 示例1 输入 1516000 输出 0006151 :return: """ num = input() num = num[::-1] print(num) def test12(): """ 题目描述 将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I” 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符 接口说明 /** * 反转句子 * * @param sentence 原句子 * @return 反转后的句子 */ public String reverse(String sentence); 输入描述: 将一个英文语句以单词为单位逆序排放。 输出描述: 得到逆序的句子 示例1 输入 I am a boy 输出 boy a am I :return: """ # sentence = input() # lis = list(sentence.split()) # output = '' # for i in lis[::-1]: # output += (i + ' ') # output2 = '' # for i in output[:-1:1]: # output2 += i # print(output2) import re words = input() rev_words = re.split(r"[\t|\s]+", words) rev_words.reverse() print(" ".join(rev_words)) def test13(): """ 题目描述 给定n个字符串,请对n个字符串按照字典序排列。 输入描述: 输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。 输出描述: 数据输出n行,输出结果为按照字典序排列的字符串。 示例1 输入 复制 9 cap to cat card two too up boat boot 输出 复制 boat boot cap card cat to too two up :return: """ num = int(input()) lis = [] for i in range(num): lis.append(input()) lis.sort() for i in lis: print(i) def test14(): """ 题目描述 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。 输入描述: 输入一个整数(int类型) 输出描述: 这个数转换成2进制后,输出1的个数 示例1 输入 5 输出 2 :return: """ num = int(input()) # output = bin(num).count('1') output = 0 while num > 0: output += (num & 1) num = num >> 1 print(output) def test15(): """ 题目描述 正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。 输入描述: 输入两个正整数A和B。 输出描述: 输出A和B的最小公倍数。 示例1 输入 5 7 输出 35 :return: """ n = input().split() a = int(n[0]) b = int(n[1]) i, j = a, b m = a % b while m != 0: a = b b = m m = a % b print(int(i * j / b)) def test16(): """ 题目描述 Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。 输入描述: Lily使用的图片包括"A"到"Z"、"a"到"z"、"0"到"9"。输入字母或数字个数不超过1024。 输出描述: Lily的所有图片按照从小到大的顺序输出 示例1 输入 Ihave1nose2hands10fingers 输出 0112Iaadeeefghhinnnorsssv :return: """ while True: try: seq = input() # lis = list(seq[::1]) # lis.sort() # seq = '' # for s in lis: # seq += s seq = ''.join(sorted(seq)) print(seq) except: break def test17(): """ 题目描述 找出字符串中第一个只出现一次的字符 输入描述: 输入一个非空字符串 输出描述: 输出第一个只出现一次的字符,如果不存在输出-1 示例1 输入 asdfasdfo 输出 o :return: """ while True: try: s = input() for i in s: if s.count(i) == 1: print(i) break else: print('-1') except: break
''' 题目描述 骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6, 用123456表示这个状态,放置到平面上,可以向左翻转(用L表示向左翻转1次),可以向右翻转 (用R表示向右翻转1次),可以向前翻转(用F表示向前翻转1次),可以向后翻转(用B表示向后 翻转1次),可以逆时针旋转(用A表示逆时针旋转90度),可以顺时针旋转(用C表示顺时针旋转 90度),现从初始状态开始,根据输入的动作序列,计算得到最终的状态。 输入描述: 初始状态为:123456 输入只包含LRFBAC的字母序列,最大长度50,可重复 输出描述: 输出最终状态 示例1 输入 复制 RA 输出 复制 436512''' s = input() lis = ['1', '2', '3', '4', '5', '6'] for i in s: if i == 'R': l = lis[0] r = lis[1] u = lis[4] d = lis[5] lis[0] = d lis[1] = u lis[4] = l lis[5] = r elif i == 'L': l = lis[0] r = lis[1] u = lis[4] d = lis[5] lis[0] = u lis[1] = d lis[4] = r lis[5] = l elif i == 'F': f = lis[2] b = lis[3] u = lis[4] d = lis[5] lis[2] = d lis[3] = u lis[4] = f lis[5] = b elif i == 'B': f = lis[2] b = lis[3] u = lis[4] d = lis[5] lis[2] = u lis[3] = d lis[4] = b lis[5] = f elif i == 'A': l = lis[0] r = lis[1] f = lis[2] b = lis[3] lis[0] = f lis[1] = b lis[2] = r lis[3] = l elif i == 'C': l = lis[0] r = lis[1] f = lis[2] b = lis[3] lis[0] = b lis[1] = f lis[2] = l lis[3] = r s = ''.join(lis[::1]) print(s)