Python程式設計基礎題(14 福爾摩斯的約會)

2021-10-09 10:36:23 字數 2089 閱讀 8524

description

大偵探福爾摩斯接到一張奇怪的字條:「我們約會吧!

3485djdkxh4hhge

2984akdfkkkkggedsb

s&hgsfdk

d&hyscvnm

大偵探很快就明白了,字條上奇怪的亂碼實際上就是約會的時間星期四 14:04,因為前面兩字串中第 1 對相同的大寫英文本母(大小寫有區分)是第 4 個字母 d,代表星期四;第 2 對相同的字元是 e ,那是第 5 個英文本母,代表一天裡的第 14 個鐘頭(於是一天的 0 點到 23 點由數字 0 到 9、以及大寫字母 a 到 n 表示);後面兩字串第 1 對相同的英文本母 s 出現在第 4 個位置(從 0 開始計數)上,代表第 4 分鐘。現給定兩對字串,請幫助福爾摩斯解碼得到約會的時間。

input

輸入在 4 行中分別給出 4 個非空、不包含空格、且長度不超過 60 的字串。

output

在一行中輸出約會的時間,格式為 day hh:mm,其中 day 是某星期的 3 字元縮寫,即 mon 表示星期一,tue 表示星期二,wed 表示星期三,thu 表示星期四,fri 表示星期五,sat 表示星期六,sun 表示星期日。題目輸入保證每個測試存在唯一解。

sample input

3485djdkxh4hhge

2984akdfkkkkggedsb

s&hgsfdk

d&hyscvnm

sample output

thu 14:04

參考程式

def

getmin

(a,b)

:if areturn a

else

:return b

deffind2

(str1,str2)

: length=getmin(

len(str1)

,len

(str2)

) cnt,i=0,

0 ls=

while i if cnt==0:

if str1[i]

==str2[i]

and str1[i]

in"abcdefg":)

cnt+=

1 i+=

1else

:if str1[i]

==str2[i]

:if str1[i]

in"0123456789":)

break

elif str1[i]

in"abcdefghijklmn":)

break

else

: i+=

1else

: i+=

1return ls

deffind1

(str1,str2)

: m=getmin(

len(str1)

,len

(str2)

)for i in

range

(m):

if str1[i]

.isalpha(

)and str1[i]

==str2[i]

:break

return i

st1=

input()

st2=

input()

st3=

input()

st4=

input()

week=

" abcdefg"

hour=

"0123456789abcdefghijklmn"

di=wh=find2(st1,st2)

day=di[week.index(wh[0]

)]hour=hour.index(wh[1]

)print

(" :"

.format

(day,hour,find1(st3,st4)

))

另外,在pat的評測系統中,若提交結果為「非零返回」,要特別注意程式在執行時是否發生了異常,比如下標訪問過界、一些方法呼叫返回的異常等

Python基礎程式設計題

1 接收輸入的一行字元,統計出字串中包含數字的個數 str input 請輸入一串字元 count 0for i in str if i.isdigit count count 1print 數字個數 d count 2 請輸入星期幾的第一 個字母,用來判斷是星期幾,如果第乙個字母一樣,則繼續判斷第...

陣列 程式設計題14

c 只能實現單句話,帶乙個標點 編寫程式顛倒句子中單詞的順序 方法 用迴圈逐個讀取字元,然後將它們儲存在乙個一維陣列中。當遇到句號 問號或者感嘆號 稱為 終止字元 時,中止迴圈並且把終止字元儲存在乙個char型別變數中。然後再用乙個迴圈反向搜尋陣列,找到最後乙個單詞起始位置。顯示最後乙個單詞,然後反...

測試面試 python基礎程式設計題

1.列表的去重 方法1 保持原列表的順序 l 1 2,2 4,8 7 l1 list set l 使用set 去重,無序 l2 sorted l1,key l.index 使用sorted的key關鍵字按列表l的索引值排序 或者使用list自帶的方法sort l1.sort key l.index ...