第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

打印鍵,如果滿足條件則打印鍵值

打印鍵,如果滿足條件則打印鍵值

富國滬深 2023-11-09 22:23:56
我想創(chuàng)建簡單的“編碼腳本”。我有這本詞典:diction =  {"A" :  "Z", "Y" :  "B","C" :  "X"}我想給出一些隨機(jī)句子,迭代它的字母,如果在這本字典中找到字母 - 打印相反的字母所以,如果我輸入單詞"ABC"它應(yīng)該返回:"ZYX"我嘗試了這段代碼,但我有一個“KeyError”:# Defining dictionarydiction =  {"A" :  "Z", "Y" :  "B","C" :  "X","W" :  "E","E" :  "V","U" :  "F","G" :  "T","S" :  "H","I" :  "R","Q" :  "J","K" :  "P","O" :  "L","M" :  "N"," " :  " "}# Sentence in "szyfr" variable should be split into list.szyfr = "SOME SENTENCE WHATEVER"def split(szyfr):      return [char for char in szyfr]szyfr = split(szyfr)# Now I want to iterate through "szyfr" and replace letters as in "CAT" example:  for i in szyfr:        if i in diction:                                diction = {x:y for x,y in diction.items()}                print(i)                print("Variable: " + i + " is in 'key'")                pass        elif diction[i] in szyfr:                diction = {y:x for x,y in diction.items()}                print(i)                print("Variable: " + i + " is in 'value'")        elif i is " ":                passprint(szyfr)
查看完整描述

3 回答

?
紫衣仙女

TA貢獻(xiàn)1839條經(jīng)驗 獲得超15個贊

您缺少一些字母,例如N。請注意,這{"M": "N"}與 不同{"N": "M"}。


話雖如此,您甚至不需要字典,就好像您從 155 (65+65+26-1) 中減去大寫字母的ASCII 代碼(例如 A 的 65),您最終會得到 ASCII 代碼對應(yīng)的字母:


>>> szyfr = "SOME SENTENCE WHATEVER"

>>> "".join(chr(155-ord(e)) if "A" <= e <= "Z" else e for e in szyfr)

'HLNV HVMGVMXV DSZGVEVI'


查看完整回答
反對 回復(fù) 2023-11-09
?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗 獲得超4個贊

根據(jù)您提供的代碼,我發(fā)現(xiàn)以下奇怪之處:


szyfr = "SOME SENTENCE WHATEVER"


def split(szyfr): 

     return [char for char in szyfr]


szyfr = split(szyfr)

看來您正在嘗試從字符串構(gòu)建一個列表,這可以簡單地完成為:


>>> s = "hola"

>>> l1 = list(s)

>>> l1

['h', 'o', 'l', 'a']

因此,根據(jù)您的具體情況:


szyfr = "SOME SENTENCE WHATEVER"

szyfr = list(szyfr)

不過,這并不是真正需要的,因為您可以使用for直接管理字符串,就好像它是列表一樣。


現(xiàn)在,您想要替換特定字典后面的字符。我發(fā)現(xiàn)你的解決方案太復(fù)雜,而你只需要:


diction =  {

"A" :  "Z", 

"Y" :  "B",

"C" :  "X",

"W" :  "E",

"E" :  "V",

"U" :  "F",

"G" :  "T",

"S" :  "H",

"I" :  "R",

"Q" :  "J",

"K" :  "P",

"O" :  "L",

"M" :  "N",

" " :  " "

}


sentence_to_code = input("Give me a sentence: ").strip().upper()

toret = ""


for ch in sentence_to_code:

    coded_ch = diction.get(ch)


    if not coded_ch:

        coded_ch = ch


    toret += coded_ch


print(toret)

如果您沒有定義所有可能字符的對應(yīng)項,那么使用字典的get(k)方法是明智的,該方法在未找到鍵k時返回None 。


必須考慮到get(k)方法有默認(rèn)返回值參數(shù),以防找不到鍵,因此您可以使用get(k, default_return_value),這可以讓我們進(jìn)一步簡化代碼:


diction =  {

"A" :  "Z", 

"Y" :  "B",

"C" :  "X",

"W" :  "E",

"E" :  "V",

"U" :  "F",

"G" :  "T",

"S" :  "H",

"I" :  "R",

"Q" :  "J",

"K" :  "P",

"O" :  "L",

"M" :  "N",

" " :  " "

}


sentence_to_code = input("Give me a sentence: ").strip().upper()

toret = "".join([diction.get(ch, ch) for ch in sentence_to_code])


print(toret)

現(xiàn)在我們使用列表理解,因為我們不再需要條件。該調(diào)用diction.get(ch, ch)返回ch或相應(yīng)的編碼字符,如果在字典中找不到,則返回ch本身。通過調(diào)用str.join(),"".join(...)我們將列表轉(zhuǎn)換回字符串。


查看完整回答
反對 回復(fù) 2023-11-09
?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗 獲得超8個贊

如果您確實想使用一個字典,其中每個鍵“字母”都有值“相反字母”:


這是一個可能的解決方案:


diction = {" ": " "}


all_letters = range(ord('A'), ord('Z')+1)

for char, opsite_char in zip(all_letters, reversed(all_letters)):

    diction[chr(char)] = chr(opsite_char)


print(diction)

輸出:


{' ': ' ', 'A': 'Z', 'B': 'Y', 'C': 'X', 'D': 'W', 'E': 'V', 'F': 'U', 'G': 'T', 

'H': 'S', 'I': 'R', 'J': 'Q', 'K': 'P', 'L': 'O', 'M': 'N', 'N': 'M', 'O': 'L', 

'P': 'K', 'Q': 'J', 'R': 'I', 'S': 'H', 'T': 'G', 'U': 'F', 'V': 'E', 'W': 'D', 

'X': 'C', 'Y': 'B', 'Z': 'A'}


查看完整回答
反對 回復(fù) 2023-11-09
  • 3 回答
  • 0 關(guān)注
  • 225 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號