2025年IOI信息學奧林匹克模擬試卷:Python編程與數據結構挑戰題_第1頁
2025年IOI信息學奧林匹克模擬試卷:Python編程與數據結構挑戰題_第2頁
2025年IOI信息學奧林匹克模擬試卷:Python編程與數據結構挑戰題_第3頁
2025年IOI信息學奧林匹克模擬試卷:Python編程與數據結構挑戰題_第4頁
2025年IOI信息學奧林匹克模擬試卷:Python編程與數據結構挑戰題_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2025年IOI信息學奧林匹克模擬試卷:Python編程與數據結構挑戰題一、編程題(30分)要求:根據給出的Python代碼,分析代碼的功能,并完成缺失部分。```pythondefprint_pattern(n):foriinrange(1,n+1):forjinrange(1,i+1):print("*",end="")print()print_pattern(5)```1.修改上述代碼,使得當輸入的參數n為奇數時,打印正方形圖案;當輸入的參數n為偶數時,打印長方形圖案。2.修改上述代碼,使得打印圖案時,每個星號(*)之間有1個空格。3.修改上述代碼,使得當輸入的參數n為0時,不打印任何圖案。二、編程題(30分)要求:根據給出的Python代碼,分析代碼的功能,并完成缺失部分。```pythondefreverse_string(s):reversed_s=""foriinrange(len(s)-1,-1,-1):reversed_s+=s[i]returnreversed_sprint(reverse_string("HelloWorld!"))```1.修改上述代碼,使得當輸入的字符串s為空字符串時,返回空字符串。2.修改上述代碼,使得當輸入的字符串s中包含數字時,返回字符串中的數字部分。3.修改上述代碼,使得當輸入的字符串s為純字母時,返回字符串中的字母部分,并忽略大小寫。三、編程題(20分)要求:根據給出的Python代碼,分析代碼的功能,并完成缺失部分。```pythondefsum_of_squares(n):returnsum(i**2foriinrange(1,n+1))print(sum_of_squares(5))```1.修改上述代碼,使得當輸入的參數n為負數時,返回0。2.修改上述代碼,使得當輸入的參數n為0時,返回0。3.修改上述代碼,使得當輸入的參數n為1時,返回1。四、編程題(30分)要求:編寫一個Python函數,該函數接收一個整數列表作為輸入,并返回列表中所有偶數的和。```pythondefsum_even_numbers(numbers):#請在這里完成代碼```1.完成函數定義,確保輸入列表為空時返回0。2.完成函數定義,確保輸入列表包含非整數時,只計算整數部分為偶數的元素。3.完成函數定義,確保輸入列表包含負數時,負數也視為偶數進行計算。五、編程題(30分)要求:編寫一個Python函數,該函數接收一個字符串作為輸入,并返回該字符串中不重復的字符組成的字符串,字符之間沒有空格。```pythondefunique_characters(s):#請在這里完成代碼```1.完成函數定義,確保輸入字符串為空時返回空字符串。2.完成函數定義,確保輸入字符串包含特殊字符時,只返回字母和數字。3.完成函數定義,確保輸入字符串中的大寫字母和小寫字母被視為不同字符。六、編程題(30分)要求:編寫一個Python函數,該函數接收一個整數列表作為輸入,并返回一個新列表,其中包含原列表中所有大于平均值的元素。```pythondefabove_average(numbers):#請在這里完成代碼```1.完成函數定義,確保輸入列表為空時返回空列表。2.完成函數定義,確保輸入列表包含負數時,仍然計算平均值并返回大于平均值的元素。3.完成函數定義,確保輸入列表中所有元素都相等時,返回空列表。本次試卷答案如下:一、編程題(30分)1.修改上述代碼,使得當輸入的參數n為奇數時,打印正方形圖案;當輸入的參數n為偶數時,打印長方形圖案。```pythondefprint_pattern(n):ifn%2==0:foriinrange(1,n+1):print("*"*(n//2+1))else:foriinrange(1,n+1):print("*"*i)print_pattern(5)```解析思路:首先判斷n是否為偶數,如果是,則打印n//2+1個星號,形成長方形圖案;如果不是,則直接打印i個星號,形成正方形圖案。2.修改上述代碼,使得打印圖案時,每個星號(*)之間有1個空格。```pythondefprint_pattern(n):foriinrange(1,n+1):forjinrange(1,i+1):print("*",end="")print()print_pattern(5)```解析思路:在打印星號后添加一個空格,并在每行末尾使用`print()`函數換行。3.修改上述代碼,使得當輸入的參數n為0時,不打印任何圖案。```pythondefprint_pattern(n):ifn>0:foriinrange(1,n+1):forjinrange(1,i+1):print("*",end="")print()print_pattern(5)```解析思路:在循環開始前添加一個條件判斷,只有當n大于0時才執行循環。二、編程題(30分)1.修改上述代碼,使得當輸入的字符串s為空字符串時,返回空字符串。```pythondefreverse_string(s):ifs=="":return""reversed_s=""foriinrange(len(s)-1,-1,-1):reversed_s+=s[i]returnreversed_sprint(reverse_string(""))```解析思路:在函數開始時添加一個條件判斷,如果s為空字符串,則直接返回空字符串。2.修改上述代碼,使得當輸入的字符串s中包含數字時,返回字符串中的數字部分。```pythondefreverse_string(s):reversed_s=""foriinrange(len(s)-1,-1,-1):ifs[i].isdigit():reversed_s+=s[i]returnreversed_sprint(reverse_string("Hello123World"))```解析思路:在循環中添加一個條件判斷,如果當前字符是數字,則將其添加到reversed_s字符串中。3.修改上述代碼,使得當輸入的字符串s為純字母時,返回字符串中的字母部分,并忽略大小寫。```pythondefreverse_string(s):reversed_s=""foriinrange(len(s)-1,-1,-1):ifs[i].isalpha():reversed_s+=s[i].lower()returnreversed_sprint(reverse_string("HelloWorld"))```解析思路:在循環中添加一個條件判斷,如果當前字符是字母,則將其轉換為小寫并添加到reversed_s字符串中。三、編程題(20分)1.修改上述代碼,使得當輸入的參數n為負數時,返回0。```pythondefsum_of_squares(n):ifn<0:return0returnsum(i**2foriinrange(1,n+1))print(sum_of_squares(-5))```解析思路:在函數開始時添加一個條件判斷,如果n小于0,則直接返回0。2.修改上述代碼,使得當輸入的參數n為0時,返回0。```pythondefsum_of_squares(n):ifn==0:return0returnsum(i**2foriinrange(1,n+1))print(sum_of_squares(0))```解析思路:在函數開始時添加一個條件判斷,如果n等于0,則直接返回0。3.修改上述代碼,使得當輸入的參數n為1時,返回1。```pythondefsum_of_squares(n):ifn==1:return1returnsum(i**2foriinrange(1,n+1))print(sum_of_squares(1))```解析思路:在函數開始時添加一個條件判斷,如果n等于1,則直接返回1。四、編程題(30分)1.完成函數定義,確保輸入列表為空時返回0。```pythondefsum_even_numbers(numbers):returnsum(numfornuminnumbersifnum%2==0)print(sum_even_numbers([]))```解析思路:使用列表推導式和條件判斷,只計算列表中偶數的和。2.完成函數定義,確保輸入列表包含非整數時,只計算整數部分為偶數的元素。```pythondefsum_even_numbers(numbers):returnsum(int(num)fornuminnumbersifint(num)%2==0)print(sum_even_numbers([1.5,2,3.7,4]))```解析思路:將列表中的元素轉換為整數,然后進行條件判斷和求和。3.完成函數定義,確保輸入列表包含負數時,負數也視為偶數進行計算。```pythondefsum_even_numbers(numbers):returnsum(numfornuminnumbersifnum%2==0)print(sum_even_numbers([1,-2,3,-4]))```解析思路:條件判斷中只考慮數字的偶奇性,不考慮正負。五、編程題(30分)1.完成函數定義,確保輸入字符串為空時返回空字符串。```pythondefunique_characters(s):return"".join(sorted(set(s)))print(unique_characters(""))```解析思路:使用集合(set)去除重復字符,然后使用sorted()函數對字符進行排序,最后使用join()函數將字符連接成字符串。2.完成函數定義,確保輸入字符串包含特殊字符時,只返回字母和數字。```pythondefunique_characters(s):return"".join(sorted(set(filter(str.isalnum,s))))print(unique_characters("Hello,World!"))```解析思路:使用filter()函數和str.isalnum()方法過濾出字母和數字,然后使用集合(set)去除重復字符,其余步驟與第一問相同。3.完成函數定義,確保輸入字符串中的大寫字母和小寫字母被視為不同字符。```pythondefunique_characters(s):return"".join(sorted(set(s),key=str.lower))print(unique_characters("HelloWorld"))```解析思路:使用sorted()函數對字符進行排序,key參數設置為str.lower,確保大小寫字母被視為不同字符。六、編程題(30分)1.完成函數定義,確保輸入列表為空時返回空列表。```pythondefabove_average(numbers):ifnotnumbers:return[]average=sum(numbers)/len(numbers)return[numfornuminnumbersifnum>average]print(above_average([]))```解析思路:首先判斷列表是否為空,如果為空,則返回空列表。否則,計算平均值,并使用列表推導式找出大于平均值的元素。2.完成函數定義,確保輸入列表包含負數時,仍然計算平均值并返回大于平均值的元素。```pythondefabove_average(numbers):average=sum(numbers)/len(numbers)return[numfornuminnumbersifnum>average]print(above_average([1,-2,3,-4]))```解析思路:計算平均值時,不考慮元素的符號,只計算數值大小。然后使用列表推導式找出大于平均值的元素。3.完成函數定義,確保輸入列表中所有元素

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論