笔试题目练习-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)

 

posted @ 2018-09-19 19:10  00lab  阅读(2174)  评论(0编辑  收藏  举报