我正在完成两项任务,Hello, playground
<nil> malformed HTTP version "HTTP/2"
7 <nil> HTTP/2
&{301 301 HTTP/2.0 2 0 map[Cache-Control:[public, max-age=2592000] Content-Length:[220] Content-Type:[text/html; charset=UTF-8] Date:[Mon, 15 Jun 2020 11:08:39 GMT] Expires:[Wed, 15 Jul 2020 11:08:39 GMT] Location:[https://www.google.com/] Server:[gws]] 0xc0000902c0 220 [] false false map[] 0xc0000f2000 <nil>} <nil>
和encode
。 decode
用于将字符串中的所有元音转换为相应的数字(请参见代码中的词典),encode
用于将字符串中的所有整数转换回其相应的元音。
到目前为止,我的代码:
decode
我已经设法完成第一个功能vowels = {'a': '1',
'e': '2',
'i': '3',
'o': '4',
'u': '5'}
def encode(word1):
new_word = ""
for letter in word1:
if letter.lower() not in vowels:
new_word += letter
else:
new_word += letter.replace(letter, vowels[letter])
return new_word
print(encode('hello'))
def decode(word2):
new_word1 = ""
for letter in word2:
if letter.lower()not in vowels:
new_word1 += letter
elif letter.isdigit():
new_word1 += letter.replace(letter, vowels[letter])
return new_word1
print(encode('h2ll4'))
----------------------------------------------
>>> h2ll4
>>> h2ll4
,但是不能完全正确地完成第二个功能。我试图让encode
返回key
的{{1}},但是我可以让value
返回encode
的{{1}}吗?
我的问题:
value
一样获得字典key
来返回decode
可以返回value
吗?key
函数可以更短吗?您可以假定字符串中唯一出现的整数是1到5。
谢谢
答案 0 :(得分:1)
一种更简洁的方法是使用列表推导,检查word
中的每个字符是否在vowels
中,如果是,则将其替换为相应的整数。可以使用逆字典以相同的方式进行解码:
vowels = {'a': '1',
'e': '2',
'i': '3',
'o': '4',
'u': '5'}
inv_vowels = { i : v for v, i in vowels.items() }
def encode(word):
return ''.join(vowels[c] if c in vowels else c for c in word)
def decode(word):
return ''.join(inv_vowels[c] if c in inv_vowels else c for c in word)
print(encode('hello'))
print(decode(encode('hello')))
输出:
h2ll4
hello
如果您想在word
中使用大写字母,则可以将列表理解中的c
替换为c.lower()
,即
def encode(word):
return ''.join(vowels[c.lower()] if c.lower() in vowels else c for c in word)
但是请注意,在解码时,编码的元音将始终转换为小写字符,即
print(decode(encode('HEllo')))
给予
Hello # not HEllo
您可以通过以下方法解决此问题:扩展字典以包含大写的元音,而不更改输入字母的大小写,例如
vowels = {'a': '1',
'e': '2',
'i': '3',
'o': '4',
'u': '5',
'A': '6',
'E': '7',
'I': '8',
'O': '9',
'U': '0'}
inv_vowels = { i : v for v, i in vowels.items() }
def encode(word):
return ''.join(vowels[c] if c in vowels else c for c in word)
def decode(word):
return ''.join(inv_vowels[c] if c in inv_vowels else c for c in word)
print(encode('HEllo'))
print(decode(encode('HEllo')))
输出:
H7ll4
HEllo