區(qū)分大小寫的凱撒密碼。

成都創(chuàng)新互聯(lián)是專業(yè)的隴川網(wǎng)站建設(shè)公司,隴川接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行隴川網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
在凱撒密碼的基礎(chǔ)上針對(duì)大寫與小字字符區(qū)分處理即可:
解密只需要將7換成19(因?yàn)?6-7=19),或者使用-7也可以:
print(caesarcipher(caesarcipher('Student!', 7),19))
1 import re
2 import urllib.parse, urllib.request
3 import hashlib
4 import urllib
5 import random
6 import json
7 import time
8 from translate import Translator
非python自帶的庫(kù),如python google translator,需要手動(dòng)安裝,命令pip install module_name。
1. 百度翻譯
1 appid = 'your_appid'
2 secretKey = 'your_secretKey'
3 url_baidu = ''
4
5 def translateBaidu(text, f='ja', t='zh'):
6 salt = random.randint(32768, 65536)
7 sign = appid + text + str(salt) + secretKey
8 sign = hashlib.md5(sign.encode()).hexdigest()
9 url = url_baidu + '?appid=' + appid + 'q=' + urllib.parse.quote(text) + 'from=' + f + 'to=' + t + \
10 'salt=' + str(salt) + 'sign=' + sign
11 response = urllib.request.urlopen(url)
12 content = response.read().decode('utf-8')
13 data = json.loads(content)
14 result = str(data['trans_result'][0]['dst'])
15 print(result)
參數(shù):text--待翻文本,f--初始語(yǔ)言,t--目標(biāo)語(yǔ)言,后面方法類似。
2. 有道翻譯
1 url_youdao = ';smartresult=rulesmartresult=ugcsessionFrom=' \
2 ''
3 dict = {}
4 dict['type'] = 'AUTO'
5 dict['doctype'] = 'json'
6 dict['xmlVersion'] = '1.8'
7 dict['keyfrom'] = 'fanyi.web'
8 dict['ue'] = 'UTF-8'
9 dict['action'] = 'FY_BY_CLICKBUTTON'
10 dict['typoResult'] = 'true'
11
12 def translateYoudao(text):
13 global dict
14 dict['i'] = text
15 data = urllib.parse.urlencode(dict).encode('utf-8')
16 response = urllib.request.urlopen(url_youdao, data)
17 content = response.read().decode('utf-8')
18 data = json.loads(content)
19 result = data['translateResult'][0][0]['tgt']
20 print(result)
參數(shù)主要由字典dict指定,發(fā)現(xiàn)沒有地方可以指定語(yǔ)言(可能是我沒找到),測(cè)試結(jié)果是不管輸入什么語(yǔ)言的文本,輸出均是中文。
3. 谷歌翻譯
1 url_google = ''
2 reg_text = re.compile(r'(?=TRANSLATED_TEXT=).*?;')
3 user_agent = r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ' \
4 r'Chrome/44.0.2403.157 Safari/537.36'
5
6 def translateGoogle(text, f='ja', t='zh-cn'):
7 values = {'hl': 'zh-cn', 'ie': 'utf-8', 'text': text, 'langpair': '%s|%s' % (f, t)}
8 value = urllib.parse.urlencode(values)
9 req = urllib.request.Request(url_google + '?' + value)
10 req.add_header('User-Agent', user_agent)
11 response = urllib.request.urlopen(req)
12 content = response.read().decode('utf-8')
13 data = reg_text.search(content)
14 result = data.group(0).strip(';').strip('\'')
15 print(result)
和上面兩種方法一樣,采用的是訪問網(wǎng)頁(yè)的形式來進(jìn)行翻譯。
還有一種是利用python谷歌翻譯模塊Translator:
1 def translateGoogle2(text):
2 result = translator.translate(text)
3 print(result)
4. 測(cè)試代碼
測(cè)試過程:
翻譯5個(gè)字串為一個(gè)小的單位,輸出消耗時(shí)間;
循環(huán)10次為一個(gè)大的單位,輸出消耗時(shí)間;
對(duì)不同的語(yǔ)言字串和循環(huán)次數(shù)做過多次測(cè)試,發(fā)現(xiàn)情況基本類似,所以這里選擇了10次。
1 text_list = ['こんにちは', 'こんばんは', 'おはようございます', 'お休(やす)みなさい', 'お元?dú)?げんき)ですか']
2
3 time_baidu = 0
4 time_youdao = 0
5 time_google = 0
6 time_google2 = 0
7
8 for i in list(range(1, 11)):
9 time1 = time.time()
10 for text in text_list:
11 translateBaidu(text)
12 time2 = time.time()
13 print('百度翻譯第%s次時(shí)間:%s' % (i, time2 - time1))
14 time_baidu += (time2 - time1)
15
16 time1 = time.time()
17 for text in text_list:
18 translateYoudao(text)
19 time2 = time.time()
20 print('有道翻譯第%s次時(shí)間:%s' % (i, time2 - time1))
21 time_youdao += (time2 - time1)
22
23 time1 = time.time()
24 for text in text_list:
25 translateGoogle(text)
26 time2 = time.time()
27 print('谷歌翻譯第%s次時(shí)間:%s' % (i, time2 - time1))
28 time_google += (time2 - time1)
29
30 time1 = time.time()
31 for text in text_list:
32 translateGoogle2(text)
33 time2 = time.time()
34 print('谷歌2翻譯第%s次時(shí)間:%s' % (i, time2 - time1))
35 time_google2 += (time2 - time1)
36
37
38 print('百度翻譯時(shí)間:%s' % (time_baidu / 10))
39 print('有道翻譯時(shí)間:%s' % (time_youdao / 10))
40 print('谷歌翻譯時(shí)間:%s' % (time_google / 10))
41 print('谷歌2翻譯時(shí)間:%s' % (time_google2 / 10))
我改了一下
dictionary={}????#?創(chuàng)建一個(gè)空字典
#?定義一個(gè)函數(shù),功能:向字典中增加記錄
#?dictionary?是字典,en?是英文單詞,ch?是對(duì)應(yīng)中文單詞
def?add_dict(dictionary,?en,?ch):
dictionary[en]?=?ch??????????????#?增添or?更新一條記錄
dictionary[ch]?=?en
print("添加成功")??
#?定義一個(gè)函數(shù),功能:翻譯
#?dictionary?是字典,string?是要查找的單詞(中文or?英文)
def?find(dictionary,?string):
if?string?not?in?dictionary:?????#?如果string?不在dict?內(nèi),打印提示信????????????????????????????????????????息
print("該單詞不在dict?內(nèi)")
else:????????????????????????????#?否則,給出對(duì)應(yīng)中文釋義
print("該單詞",?string,?"的意思是:",?dictionary[string])
#?向字典內(nèi)增添幾個(gè)記錄,測(cè)試增加記錄的功能,也可嘗試用while?循環(huán)持續(xù)接收用戶添加詞條
for?i?in?range(3):
en?=?input("增添的英文單詞:?")??????#?接受輸入
ch?=?input("對(duì)應(yīng)的中文單詞:?")
add_dict(dictionary,?en,?ch)??????#?調(diào)用add_dict?函數(shù),往字典中添加內(nèi)?????????????????????????????????????????容
#?接收用戶輸入,調(diào)用find?函數(shù)實(shí)現(xiàn)翻譯
string?=?input("請(qǐng)輸入要查詢的單詞:?")
find(dictionary,?string)
運(yùn)行效果:
增添的英文單詞:?apple
對(duì)應(yīng)的中文單詞:?蘋果
添加成功
增添的英文單詞:?banana
對(duì)應(yīng)的中文單詞:?香蕉
添加成功
增添的英文單詞:?peach
對(duì)應(yīng)的中文單詞:?桃子
添加成功
請(qǐng)輸入要查詢的單詞:?peach
該單詞?peach?的意思是:?桃子
錯(cuò)誤應(yīng)該是你定義函數(shù)時(shí)的變量名(dictionary)和函數(shù)內(nèi)部的變量名(dict)不一致導(dǎo)致的,還有你在測(cè)試add_dict的時(shí)候把a(bǔ)dd_dict的返回值None賦給了一個(gè)名叫dictionary的變量,這是完全沒必要的,并且導(dǎo)致了和現(xiàn)有的dictionary的沖突,使得第二次循環(huán)添加單詞時(shí)出現(xiàn)錯(cuò)誤。
是up函數(shù)。根據(jù)查詢資料顯示,up在python中是up函數(shù)的意思。Python,翻譯成漢語(yǔ)是蟒蛇的意思,并且Python的logo也是兩條纏繞在一起的蟒蛇的樣子,然而Python語(yǔ)言和蟒蛇實(shí)際上并沒有一毛錢關(guān)系。Python語(yǔ)言是由荷蘭程序員Guido van Rossum,江湖人稱龜叔,獨(dú)立開發(fā)完成初版的。
意思:返回字符串、列表、字典、元組等長(zhǎng)度。
語(yǔ)法:len(str)。
參數(shù):str:要計(jì)算的字符串、列表、字典、元組等。
返回值:字符串、列表、字典、元組等元素的長(zhǎng)度。
電腦:華為MateBook
系統(tǒng):Windows10
軟件:python3.6(Anaconda)
1、len函數(shù)的作用,是Return the number of items in a container.,翻譯過來,就是返回容器中項(xiàng)目的數(shù)目。
2、len的變量必須是容器,單獨(dú)的數(shù)字行不通:
a=2
print(len(a))
3、容器可以是列表:
a=
print(len(a))
4、容器可以是嵌套列表:
a=,1,2,3,]
print(len(a))
5、容器可以是字符串:
6、字符串的長(zhǎng)度與字符有關(guān):
a='abcdefg369'
print(len(a))
7、反斜杠組合而成的轉(zhuǎn)移符,只是一個(gè)字符:
a='\n\t'
print(len(a))
這里要特別注意,\n是一個(gè)字符。
8個(gè)超好用內(nèi)置函數(shù)set(),eval(),sorted(),reversed(),map(),reduce(),filter(),enumerate()
python中有許多內(nèi)置函數(shù),不像print那么廣為人知,但它們卻異常的強(qiáng)大,用好了可以大大提高代碼效率。
這次來梳理下8個(gè)好用的python內(nèi)置函數(shù)
1、set()
當(dāng)需要對(duì)一個(gè)列表進(jìn)行去重操作的時(shí)候,set()函數(shù)就派上用場(chǎng)了。
用于創(chuàng)建一個(gè)集合,集合里的元素是無序且不重復(fù)的。集合對(duì)象創(chuàng)建后,還能使用并集、交集、差集功能。
2、eval()之前有人問如何用python寫一個(gè)四則運(yùn)算器,輸入字符串公式,直接產(chǎn)生結(jié)果。用eval()來做就很簡(jiǎn)單:eval(str_expression)作用是將字符串轉(zhuǎn)換成表達(dá)式,并且執(zhí)行。
3、sorted()在處理數(shù)據(jù)過程中,我們經(jīng)常會(huì)用到排序操作,比如將列表、字典、元組里面的元素正/倒排序。這時(shí)候就需要用到sorted() ,它可以對(duì)任何可迭代對(duì)象進(jìn)行排序,并返回列表。對(duì)列表升序操作:
對(duì)元組倒序操作:
使用參數(shù):key,根據(jù)自定義規(guī)則,按字符串長(zhǎng)度來排序:
根據(jù)自定義規(guī)則,對(duì)元組構(gòu)成的列表進(jìn)行排序:
4、reversed()如果需要對(duì)序列的元素進(jìn)行反轉(zhuǎn)操作,reversed()函數(shù)能幫到你。reversed()接受一個(gè)序列,將序列里的元素反轉(zhuǎn),并最終返回迭代器。
5、map()做文本處理的時(shí)候,假如要對(duì)序列里的每個(gè)單詞進(jìn)行大寫轉(zhuǎn)化操作。這個(gè)時(shí)候就可以使用map()函數(shù)。
map()會(huì)根據(jù)提供的函數(shù),對(duì)指定的序列做映射,最終返回迭代器。也就是說map()函數(shù)會(huì)把序列里的每一個(gè)元素用指定的方法加工一遍,最終返回給你加工好的序列。舉個(gè)例子,對(duì)列表里的每個(gè)數(shù)字作平方處理:
6、reduce()前面說到對(duì)列表里的每個(gè)數(shù)字作平方處理,用map()函數(shù)。那我想將列表里的每個(gè)元素相乘,該怎么做呢?這時(shí)候用到reduce()函數(shù)。
reduce()會(huì)對(duì)參數(shù)序列中元素進(jìn)行累積。第一、第二個(gè)元素先進(jìn)行函數(shù)操作,生成的結(jié)果再和第三個(gè)元素進(jìn)行函數(shù)操作,以此類推,最終生成所有元素累積運(yùn)算的結(jié)果。再舉個(gè)例子,將字母連接成字符串。
你可能已經(jīng)注意到,reduce()函數(shù)在python3里已經(jīng)不再是內(nèi)置函數(shù),而是遷移到了functools模塊中。這里把reduce()函數(shù)拎出來講,是因?yàn)樗匾恕?/p>
7、filter()一些數(shù)字組成的列表,要把其中偶數(shù)去掉,該怎么做呢?
filter()函數(shù)輕松完成了任務(wù),它用于過濾序列,過濾掉不符合條件的元素,返回一個(gè)迭代器對(duì)象。filter()函數(shù)和map()、reduce()函數(shù)類似,都是將序列里的每個(gè)元素映射到函數(shù),最終返回結(jié)果。我們?cè)僭囋嚕绾螐脑S多單詞里挑出包含字母w的單詞。
8、enumerate()這樣一個(gè)場(chǎng)景,同時(shí)打印出序列里每一個(gè)元素和它對(duì)應(yīng)的順序號(hào),我們用enumerate()函數(shù)做做看。
enumerate翻譯過來是枚舉、列舉的意思,所以說enumerate()函數(shù)用于對(duì)序列里的元素進(jìn)行順序標(biāo)注,返回(元素、索引)組成的迭代器。再舉個(gè)例子說明,對(duì)字符串進(jìn)行標(biāo)注,返回每個(gè)字母和其索引。
分享文章:python翻譯函數(shù) python語(yǔ)句翻譯器
文章出自:http://www.yijiale78.com/article28/dooeojp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、云服務(wù)器、建站公司、搜索引擎優(yōu)化、定制開發(fā)、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)