python編程考試題目大全

来源:https://www.cnblogs.com/liuyebai/archive/2022/10/19/16806615.html
-Advertisement-
Play Games

1.題目名稱:批閱奏章某朝皇帝有大臣n名(1<=n<=1000),分別編號大臣1~n。某日皇帝身體抱恙,奏章堆積如山無法及時一一批閱,便命身旁內侍幫他把奏章按指定順序排序後再閱。於是皇帝親自挑選了幾個值得信賴的重臣併排好序,要求把他們的奏章按排好的順序放到前面,其他的按照編號升序排列即可。現在要求你 ...


1.題目名稱:批閱奏章
某朝皇帝有大臣n名(1<=n<=1000),分別編號大臣1~n。某日皇帝身體抱恙,奏章堆積如山無法及時一一批閱,便命身旁內侍幫他把奏章按指定順序排序後再閱。於是皇帝親自挑選了幾個值得信賴的重臣併排好序,要求把他們的奏章按排好的順序放到前面,其他的按照編號升序排列即可。現在要求你寫一個程式來幫皇上解決這個問題,即已知奏章總數和順序、欽點重臣的排列順序,求得皇帝查閱奏章的順序。
輸入描述:
第一行輸入兩個整數p(1<=p<=5000)和q,其中p表示堆積奏章的總數、q表示皇帝欽點重臣數
第二行輸入p個數,表示所有按呈遞順序遞上來的奏章來自於哪個大臣(大臣編號)
第三行輸入q個數,表示皇帝欽點併排好序的重臣編號
輸出描述:
輸出奏章按指定順序排好序後,皇帝按大臣編號批閱的順序
輸入樣例:
5 3
5 4 3 2 1
3 5 4
輸出樣例:
3 5 4 1 2
答案:

line1 = list(map(int,input('ddd').split()))
p = line1[0]
q = line1[1]
article_author = list(map(int,input('ddd').split()))
persons = list(map(int,input('ddd').split()))
result =[]
article_author.sort()
for p1 in persons:
    for a1 in range(0,len(article_author)):
        if article_author[a1] == p1:
            result.append(p1)
            article_author[a1] = 0
for a1 in article_author:
    if a1!=0:
        result.append(a1)
print_text = list(map(str,result))
print(" ".join(print_text))

 

2.題目名稱:報價
時間限制:1000ms記憶體限制:256M
題目描述
給定某股票每日的報價和一個目標值,請在所有報價中找出和為目標值的那兩天的報價,並列印出對應的報價。
假設每種輸入只會對應一個答案,且每日的報價不會重覆。
你需要按報價從小到大的順序列印答案。

輸入描述:
輸入:第一行是某股票每日的報價,這些報價是正整數且用空格相隔,例如:17 20 33
第二行是目標值,例如:37
輸出描述:
輸出:對應的報價,報價之間用空格相隔,例如:17 20
示例
示例1
輸入
17 20 33
37
複製
輸出
17 20
複製
答案:

list1=list(map(int,input().split()))
goal=int(input())
list1.sort()
for i in list1:
    if (goal-i) in list1:
        print(str(i)+" "+str(goal-i))
        break

 

3.題目名稱:水仙花數
時間限制:1000ms記憶體限制:256M
題目描述
如果一個 3 位數等於其各位數字的立方和,則稱這個數為水仙花數。
例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一個水仙花數
輸入描述:
輸入一個整數a與一個整數b, 用空格分隔
輸出描述:
輸出a到b區間內的水仙花數
示例
示例1
輸入
100 170
複製
輸出
153
複製
答案:

a,b = map(int,input().split())
for n in range(a,b+1):
    x = int(str(n)[0])
    y = int(str(n)[1])
    z = int(str(n)[2])
    if n == x**3 + y**3 + z**3:
        print(n)

4.題目名稱:字元串查找和比較(pass)
時間限制:1000ms記憶體限制:256M
題目描述
寫函數實現如下功能,給定字元串A和B,輸出A和B中的最長公共子串。比如A=“aocdfe” B=“pmcdfa” 則輸出"cdf"。
輸入描述:
輸入待處理的兩個字元串 str1,str2
輸出描述:
找出兩個字元串最長的公共子串
示例 示例1
輸入
aocdfe
pmcdfa
輸出
Cdf
答案:

A = str(input(""))
B = str(input(""))
if len(A)>len(B):
    A,B = B,A
out_put=[]
for i in range(len(A),0,-1):
    for j in range(0,len(A)-i+1):
        if A[j:j+i] in B:
            print(A[j:j+i])
            out_put.append(A[j:j+i])
    if out_put:
        break

 

5.題目名稱:尼姆博弈
時間限制:1000ms記憶體限制:256M
題目描述
你和你的朋友,兩個人一起玩 Nim 游戲:
桌子上有一堆石頭。
你們輪流進行自己的回合,你作為先手。
每一回合,輪到的人拿掉 1 - 3 塊石頭。
拿掉最後一塊石頭的人就是獲勝者。
假設你們每一步都是最優解。請編寫一個函數,來判斷你是否可以在給定石頭數量為 n 的情況下贏得游戲。如果可以贏,返回 true;否則,返回 false 。
輸入描述:
整數n
輸出描述:
true或false
示例
示例1
輸入
4
複製
輸出
False
答案:

num = int(input())
if num % 4 == 0:
    print("false")
else:
    print("true")

6.題目名稱:羅馬數字轉整數(pass)
時間限制:1000ms記憶體限制:256M
題目描述
羅馬數字包含以下七種字元: I, V, X, L,C,D 和 M。

例如, 羅馬數字 2 寫做 II ,即為兩個併列的 1 。12 寫做 XII ,即為 X + II 。 27 寫做 XXVII, 即為 XX + V + II 。
通常情況下,羅馬數字中小的數字在大的數字的右邊。但也存在特例,例如 4 不寫做 IIII,而是 IV。數字 1 在數字 5 的左邊,所表示的數等於大數 5 減小數 1 得到的數值 4 。同樣地,數字 9 表示為 IX。這個特殊的規則只適用於以下六種情況:

I 可以放在 V (5) 和 X (10) 的左邊,來表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左邊,來表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左邊,來表示 400 和 900。
給定一個羅馬數字,將其轉換成整數。
輸入描述:
羅馬數字
輸出描述:
轉換後的整數
示例
示例1
輸入 III
輸出 3
答案:

src = input()
n_value = {"Z":0,"I":1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":1000}
pre_value = {"I":"Z","V":"I","X":"I","L":"X","C":"X","D":"C","M":"C"}
result = 0
last_char = ""
for _c in src:
    result+= n_value[_c]
    if last_char == pre_value[_c]:
        result-= n_value[last_char] * 2
    last_char = _c
print(result)

7.題目名稱:員工排序
時間限制:1000ms記憶體限制:256M
題目描述
某公司要針對員工情況統一調薪,現有一個員工列表,包含姓名、職級、工作年限、工資信息。現要求將該列表按以下規則重新排序:

1、職級高的排在前面

2、若職級相同,按工資少的排前面

3、若工資相同,工作年限長的排前面

輸入描述:
第一行輸入一個整數n,表示員工列表中員工的人數

接下來的n行,分別輸入員工的姓名、職級、工作年限和工資信息,各項信息用空格分隔

輸出描述:
輸出按要求重新排列的員工列表,每名員工信息(姓名、職級、工作年限和工資)占一行

示例
示例1
輸入
6
張三 3 3 3000
李四 3 4 3000
王五 3 3 4000
趙六 4 3 3000
陸奇 4 4 4000
閆八 4 4 3980.99
複製
輸出
趙六 4 3 3000.00
閆八 4 4 3980.99
陸奇 4 4 4000.00
李四 3 4 3000.00
張三 3 3 3000.00
王五 3 3 4000.00
答案:

num = int(input())
employees = []
for _i in range(0,num):
    employees.append(input().split())
src_data = list(map(lambda x:[x[0],int(x[1]),int(x[2]),float(x[3])],employees))
src_data.sort(key=lambda x: -1000000000000*x[1] + 10000*x[3] - x[2])
for _i in src_data:
    print("%s %d %d %0.2f" % (_i[0],_i[1],_i[2],_i[3]))

8.題目名稱:漢諾塔
時間限制:1000ms記憶體限制:256M
題目描述
有三個立柱A、B、C。A柱上穿有大小不等的圓盤N個,較大的圓盤在下,較小的圓盤在上。要求把A柱上的圓盤全部移到C柱上,保持大盤在下、小盤在上的規律(可藉助B柱)。每次移動只能把一個柱子最上面的圓盤移到另一個柱子的最上面。請輸出移動過程。

輸入描述:
輸入一個整數n

輸出描述:
輸出移動過程

示例
示例1
輸入
3
複製
輸出
a->c
a->b
c->b
a->c
b->a
b->c
a->c
複製

def han_nuo(n,src,tmp,dest):
    if n <= 0:
        return
    if n == 1:
        print(src + "->" + dest)
        return
    han_nuo(n-1,src,dest,tmp)
    print(src + "->" + dest)
    han_nuo(n-1,tmp,src,dest)
    
num = int(input())
han_nuo(num,"a","b","c")

 

9.題目名稱:交換數值
時間限制:1000ms記憶體限制:256M
題目描述
將整數a、b的值進行交換,並且不使用任何中間變數。
輸入描述:
輸入待處理的兩個整數 a 和b
輸出描述:
a 和b 的值交換
示例
示例1
輸入
a=100
b=200
複製
輸出
a=200
b=100
複製
答案

a = int(input().split('=')[1])
b = int(input().split('=')[1])
a,b = b,a
print("a=%d"%a)
print("b=%d"%b)

10.題目名稱:進程排序(pass)
某系統中有n個進程,每個進程都有自己唯一的進程id(PID),同時每個進程最多還有一個父進程,父進程id為(PPID),和一個或多個子進程。
若某進程沒有父進程,則PPID為0。 當某一進程被終止時,其子進程也將被終止。
現給出進程id列表和起對應的父進程id列表,當要終止某一進程時,計算最終會終止哪些進程,並將要終止的PID按升序排列。
輸入描述:
第一行輸入兩個整數n和k,n表示當前系統中運行的進程數;k表示要終止進程的PID
第二行輸入n個正整數,表示進程列表,每個整數表示進程的PID
第三行輸入n個正整數,表示進程列表中的進程對應的父進程PPID列表。
輸出描述:
輸出當進程k終止時,所有會被終止的進程PID,並按PID升序排列,每個PID用空格分隔。
輸入樣例:
4 5
1 3 10 5
3 0 5 3
輸出樣例:5 10
答案:

import copy
n,k=map(int,input().split(' '))
pids=list(map(int,input().split(' ')))
ppids=list(map(int,input().split(' ')))
t=[k]
A=[k]
while len(set(t)&set(ppids))>0:
    zk=[]
    for x in t:
        for i in range(len(ppids)):
            if ppids[i]==x:
                zk.append(pids[i])
                A.append(pids[i])
    t=copy.deepcopy(zk)
A.sort()
li=[str(x) for x in A]
print(' '.join(li))

11.題目名稱:醜數
時間限制:1000ms記憶體限制:256M
題目描述
給你一個整數 n ,請你判斷 n 是否為 醜數 。如果是,返回 true ;否則,返回 false 。
醜數 就是只包含質因數 2、3 和/或 5 的正整數。(1通常被視為醜數)
輸入描述:
整數n
輸出描述:true或false
示例 示例1
輸入6
輸出true
答案:

m=int(input())
def cnum(n):
    while True:
        if n <= 0:
            return False
        elif n==1 or n==2 or n==3 or n==5:
            return True
        elif n % 2 ==0:
            n = n/2
        elif n % 3 ==0:
            n = n/3
        elif n % 5 ==0:
            n = n/5
        else:
            return False
f=cnum(m)
if f == True:
    print("true")
else:
    print("false")

12、 克拉茲猜想:任取一正整數,如果是偶數,將其除以2。如果是奇數,將其乘以3再加1,然後重覆這個過程,最後結果都會陷入4 2 1 的迴圈。
比如序列:13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1
請通過編程實現,當4,2,1重覆第二次的時候,結束迴圈。請輸出以下3個序列:
[13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1]
[31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1]
[101, 304, 152, 76, 38, 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1]

def collatz(number):
    res=number%2
    if res==0:
        return number//2
    else:
        return number*3+1

num=13
in_list=[13,31,101]
for  num in in_list:
    jg_list = [num]
    while True:
        num=collatz(num)
        jg_list.append(num)
        if jg_list.count(1)==2:
            break
    print(jg_list)
----------------------------------------------------------

如果輸入的數 是 1 2 就不適用上面的程式 必須改用下麵

num= int(input())
arr = input()

in_list = [int(n) for n in arr.split()]
def collatz(number):
    res=number%2
    if res==0:
        return number//2
    else:
        return number*3+1

for  num in in_list:
    jg_list = [num]
    while True:
        num=collatz(num)
        jg_list.append(num)
        if jg_list[-6:]==[4,2,1,4,2,1]:
            break
    print(jg_list)

 

13、給定一組數,按照數組中出現的次數依次從大到小排序,出現次數一樣的按照數組中的先後順序輸出
比如:
輸入:1 1 1 1 3 3 3 4 5 2 6 6 6 6 6
輸出:6 6 6 6 6 1 1 1 1 3 3 3 4 5 2¶

n=map(int,input().split())
n=list(n)

jg_list=[]
for index,value in enumerate(n):
    j=n.count(value)
    jg=[value,index,j]
    jg_list.append(jg)

jg_list.sort(key=lambda x:x[1])
jg_list.sort(key=lambda x:x[2],reverse=True)


for x in jg_list:
    print(x[0],'',end='')

14、完數:一個數如果恰好等於它的因數之和,這個數就稱為"完數"。例如6=1+2+3。編程找出10000以內的所有完數。

jg=[]
for i in range(1,10000):
    sum1 = 0
    for j in range(1,int(i/2)+1):
        if i/j==int(i/j):
            sum1+=j
    if sum1==i:
        jg.append(i)
print(jg)

15、利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示

def main():
    s = int(input('請輸入成績:'))
    if s>=90:
        grade = 'A'
    elif s>=60:
        grade = 'B'
    else:
        grade = 'C'
    print(grade)
main()

16、遞歸案例 求斐波那契列數列1,1,2,3,5,8,13 的第30位



def f(n):
      return 1 if n==1 or n==2 else f(n-1)+f(n-2)

n=int(input())

ls=[]
for i in range(1,n+1):
    if i==1 or i==2:
       ls.append(1)
    else:
       ls.append(ls[i-2]+ls[i-3])
       
print(ls)

求整數N的階乘

n=int(input())
def f(n):
    if n==1:
        return(n)
    else:
        return(n*f(n-1))
        
print(f(1),f(2),f(3),f(4),f(5),f(6))
        
print(f(n))

 







您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • @(文章目錄) 前言 說明下如何在VSCode下麵搭建C/C++環境以及運行 下載 點擊該鏈接,進行ming64安裝包下載:ming64安裝包 VSCode安裝請自行百度,這裡不在贅述。 安裝 將下載完成後的安裝包,解壓放到C盤下麵即可,如下圖所示: 添加環境變數 在我的電腦上點擊右鍵-->屬性:進 ...
  • 滿漢樓01 1.需求分析 滿漢樓項目說明 因為javaGUI不是學習的重點,這裡將繼續使用控制台界面來代替界面和事件處理 完成的功能: 登錄 訂座 點餐 結賬 查看賬單等功能 在實際項目中,獨立完成項目新功能非常重要,這是鍛煉編程能力和思想的重要途徑 2.界面設計 用戶登錄 顯示餐桌狀態 預定 顯示 ...
  • 聲明 本文章中所有內容僅供學習交流使用,不用於其他任何目的,不提供完整代碼,抓包內容、敏感網址、數據介面等均已做脫敏處理,嚴禁用於商業用途和非法用途,否則由此產生的一切後果均與作者無關! 本文章未經許可禁止轉載,禁止任何修改後二次傳播,擅自使用本文講解的技術而導致的任何意外,作者均不負責,若有侵權, ...
  • class object layout //64位系統 class A{ }; //sizeof(A)為1 class B : virtual public A{ }; //sizeof(B)為8 class C : virtual public A{ }; //sizeof(C)為8 class ...
  • 當我們在演示文稿中添加商標、版權或其他符號時,我們可能希望該符號出現在某個文本的上方或下方。在Microsoft PowerPoint中,我們可以通過對符號應用上標或下標格式來實現這種效果。 ...
  • 前言 大家早好、午好、晚好吖~ 環境使用: Python 3.8 Pycharm 安裝python第三方模塊: win + R 輸入 cmd 點擊確定, 輸入安裝命令 pip install 模塊名 (pip install requests) 回車 在pycharm中點擊Terminal(終端) ...
  • 今天來實踐一下如何用Python對商品庫存繪製餅狀圖進行分析 一、知識點 文件讀寫 基礎語法 字元串處理 文件生成 數據構建 二、效果展示 一目瞭然 三、代碼展示 兄弟們學習python,有時候不知道怎麼學,從哪裡開始學。掌握了基本的一些語法或者做了兩個案例後,不知道下一步怎麼走,不知道如何去學習更 ...
  • 在python中沒有直接針對文件夾的操作方法,可以藉助模塊os,os.path和shutil來操作。在新建文件夾時可以創建一級文件,也可以創建多級文件。 判斷文件夾或者文件是否存在 判斷文件或者文件夾是否存在,可以使用os.path.exists()函數來判斷,其使用方法如下 os.path.exi ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...