1. 程式人生 > >Python練習:期末測評

Python練習:期末測評

愷撒密碼 B

描述

愷撒密碼是古羅馬凱撒大帝用來對軍事情報進行加解密的演算法,它採用了替換方法對資訊中的每一個英文字元迴圈替換為字母表序列中該字元後面的第三個字元,即,字母表的對應關係如下:

原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

對於原文字元P,其密文字元C滿足如下條件:C = (P+3) mod 26

上述是凱撒密碼的加密方法,解密方法反之,即:P = (C-3) mod 26

假設使用者可能使用的輸入僅包含西文字母,即英文大小寫字母

a~zA~Z和特殊字元,請編寫一個程式,對輸入字串進行凱撒密碼加密,直接輸出結果,其中特殊字元不進行加密處理。

此題目是AutoOJ(自動評閱)型別,請注意:

1. 輸入使用input(""),不要增加提示資訊

2. 輸出與要求一致

3. 不考慮異常輸入情況

輸入

示例1: python is GOOD!

輸出

示例1: sbwkrq lv JRRG!

程式碼如下:

PassInit = input()
for ind in PassInit:
    if (ord('a') <= ord(ind) <= ord('z')):
        PassKaisa = chr(ord('a')+(ord(ind)-ord('a')+3)%26)
        print(PassKaisa,end='')
    elif  (ord('A') <= ord(ind) <= ord('Z')):
        PassKaisa = chr(ord('A')+(ord(ind)-ord('A')+3)%26)
        print(PassKaisa,end='')
    else:
        PassKaisa = ind
        print(PassKaisa,end='')
        continue

3位水仙花數計算 B

描述

"3位水仙花數"是指一個三位整數,其各位數字的3次方和等於該數本身。例如:ABC是一個"3位水仙花數",則:A3次方+B3次方+C3次方 = ABC

請按照從小到大的順序輸出所有的3位水仙花數,請用"逗號"分隔輸出結果。

注意:這是一個OJ題目,輸出格式要嚴格一致。

輸入

輸出

示例:634,412

(注意,這兩個數字不是水仙花數)

程式碼如下:

#三位水仙花數
#第一種方法
shuixianhua=[]
for i in range(1,10):
  for j in range(10):
    for k in range(10):
      if i*i*i + j*j*j + k*k*k == 100*i + 10*j + k:
        shuixianhua.append(100*i + 10*j + k)
for i in shuixianhua:
  if i == shuixianhua[-1]:
    print(i)
  else:
    print(i, end = ',')

#第二種
for p in range(100,999):
	a=p//100
	b=(p%100)//10
	c=p%10
	d=pow(a,3)+pow(b,3)+pow(c,3)
	if d==p:
		print(p,end=',')

說句心裡話 A

描述

分兩次從控制檯接收使用者的兩個輸入:第一個內容為"人名",第二個內容為"心裡話"

然後將這兩個輸入內容組成如下句型並輸出出來:

      (人名),我想對你說,(心裡話)

此題目是AutoOJ(自動評閱)型別,請注意:

1. 輸入使用input(""),不要增加提示資訊

2. 輸出與要求一致

輸入

示例1

人名

心裡話

輸出

示例1:

(人名),我想對你說,(心裡話)

程式碼如下:

#說句心裡話
name=input("")
heartword=input("")
str1=name+',我想對你說,'+heartword
print(str1)

字串垂直輸出

描述

將輸入的字串垂直輸出 

輸入格式

這是一個字串

輸出格式

多行字串 

輸入輸出示例

輸入

輸出

示例 1

中英文String

S

t

r

i

n

g

程式碼如下:

#字元垂直輸入
str1=input()
for a in str1:
	print(a)

詞頻統計之《哈姆雷特》

描述

Hamlet 《哈姆雷特》是莎士比亞的一部經典悲劇作品。這裡提供了該故事的文字檔案:hamlet.txt

請統計該檔案中出現英文的詞頻,按照如下格式列印輸出前10個高頻詞語:

the       , 1138

即:英文單詞(左對齊,寬度為10+ 逗號 + 詞語出現的頻率(右對齊,寬度為5

要求與說明:

1. 標點符號及組合不算作英文詞語,去除的標點及特殊符號如下 !"#$%&()*+,-./:;<=>[email protected][\\]^_‘{|}~

2. 同一單詞的各種大小寫形式記作一個詞,如Thethe相同 

3. 在程式中,請使用檔名開啟檔案:hamlet.txt

# 僅作為示例

f = open("hamlet.txt", "r")

f.close()

輸入

輸出

示例1the       , 1138

(示例1僅用於檢驗輸出格式,不計評判分數)

程式碼如下:

#CalHamletV1.py
# -*- coding: UTF-8 -*-
def getText():
    txt = open('hamlet.txt','r').read()
    txt = txt.lower()
    for ch in '!"#$%&()*+,-./:;<>[email protected][]\\^_{}|`~':
        txt = txt.replace(ch," ")
    return txt
if __name__ == '__main__':
    content = getText()
    words = content.split()
    counts = {}
    for ind in words:
        counts[ind] = counts.get(ind,0) + 1
    items = list(counts.items())
    items.sort(key=lambda x:x[1], reverse=True)
    for ind1 in range(10):
        word, times = items[ind1]
        print('{:<10},{:>5}'.format(word,times))