筆試題目練習-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)
相關文章
相關標籤/搜索