文章目錄
- 一.考試須知
- 二.題解
- 試題A:門牌制作
- 1.題目
- 2.決議
- 3.原始碼
- 試題B:尋找2020
- 1.題目
- 2.決議
- 3.原始碼
- 試題C:跑步鍛煉
- 1.題目
- 2.決議
- 3.原始碼
- 試題D:蛇形填數
- 1.題目
- 2.決議
- 3.原始碼
- 試題E:排序
- 1.題目
- 2.決議
- 試題F:成績統計
- 1.題目
- 2.決議
- 3.原始碼
- 試題G:單詞分析
- 1.題目
- 2.決議
- 3.原始碼
- 試題H:數字三角形
- 1.題目
- 2.決議
- 3.原始碼
- 試題I:平面切分
- 1.題目
- 2.決議
- 3.原始碼
- 試題J:裝飾珠
- 1.題目
- 2.決議
- 3.原始碼
一.考試須知

二.題解
試題A:門牌制作
1.題目

2.決議
本題求解從1到2020的數字中出現了多少個2,用回圈遍歷將每個數字字串化,統計每個字串中的2的數量并相加即可
3.原始碼
num = 0
for i in range(2021):
num += str(i).count("2")
print(num)
答案等于624
試題B:尋找2020
1.題目

2.決議
回圈生成二維串列,按照規則依次遍歷
3.原始碼
num = [list(input()) for i in range(6)]
ans = 0
# 行為2020
for i in range(6):
for j in range(3):
if num[i][j] == "2" and num[i][j + 1] == "0" and num[i][j + 2] == "2" and num[i][j + 3] == "0":
ans += 1
# 列為2020
for i in range(3):
for j in range(6):
if num[i][j] == "2" and num[i + 1][j] == "0" and num[i + 2][j] == "2" and num[i + 3][j] == "0":
ans += 1
# 斜為2020
for i in range(3):
for j in range(3):
if num[i][j] == "2" and num[i + 1][j + 1] == "0" and num[i + 2][j + 2] == "2" and num[i + 3][j + 3] == "0":
ans += 1
print(ans)
答案為5
試題C:跑步鍛煉
1.題目

2.決議
運用datetime庫,詳細庫講解可以查看博文python常用標準庫總結
3.原始碼
import datetime
num = 0
start_time = datetime.datetime(2000, 1, 1)
end_time = datetime.datetime(2020, 10, 1)
while start_time <= end_time:
if start_time.day == 1 or start_time.weekday() == 0:
num += 2
else:
num += 1
start_time += datetime.timedelta(days=1)
print(num)
答案為8879
試題D:蛇形填數
1.題目

2.決議
不難發現規律,斜線上的數字差是4的倍數

3.原始碼
n = 1
for i in range(20):
n += i * 4
print(n)
答案為761
試題E:排序
1.題目

2.決議
這其實是一道思維題,我們首先要清楚冒泡排序的原理,假如要把987654321從小到大排序,則需要從頭依次找到最大的數字依次交換,則需要交換9*(9-1)/2次(共36次)即可把原數列交換成123456789,如果數列不是完全逆序,則不滿足該公式
由冒泡排序可知,交換的次數和字串的長度有關,如果字串的的長度為n,且為完全逆序,則交換次數則為n*(n-1)/2,最為接近100次的且最短的即15字符的字串,即為
onmlkjighfedecba,交換該字串共需要105次,題目要求100次,所以要減少5次,把第六位的字符提前到首位即可,所以最終答案為jonmlkighfedecba
試題F:成績統計
1.題目


2.決議
簡單的模擬
3.原始碼
n = int(input())
x = 0
y = 0
for i in range(n):
score = int(input())
if score >= 60:
x += 1
if score >= 85:
y += 1
print(str(int(round(x / n, 2) * 100)) + "%")
print(str(int(round(y / n, 2) * 100)) + "%")
試題G:單詞分析
1.題目


2.決議
簽到題
3.原始碼
s = list(input())
max_word = "a"
max_number = 0
for i in s:
temp = s.count(i)
if temp > max_number:
max_word = i
max_number = temp
print(max_word)
print(max_number)
明天考試,后面的正在寫
試題H:數字三角形
1.題目


2.決議
二叉樹遍歷即可
3.原始碼
試題I:平面切分
1.題目

2.決議
找規律
3.原始碼
試題J:裝飾珠
1.題目


2.決議
動態規劃背包問題
3.原始碼
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/277679.html
標籤:python
