Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 将元音转换为整数,将整数转换为元音_Python 3.x - Fatal编程技术网

Python 3.x 将元音转换为整数,将整数转换为元音

Python 3.x 将元音转换为整数,将整数转换为元音,python-3.x,Python 3.x,我正在完成一个有两个功能的任务,编码和解码。encode是将字符串中的所有元音转换为它们对应的数字(参见代码中的字典),decode是将字符串中的所有整数转换回它们对应的元音 到目前为止,我的代码是: vowels = {'a': '1', 'e': '2', 'i': '3', 'o': '4', 'u': '5'} def encode(word1): new_word = "" for le

我正在完成一个有两个功能的任务,编码和解码。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


我已经成功地完成了第一个函数的编码,但无法完全正确地完成第二个函数。我试图获取返回用于编码的值的键,但是我可以获取返回用于解码的键的值吗

我的问题是:

我可以得到一个字典值来返回键吗,就像返回键一样 可以返回值吗? 如何检查字符串1中的整数 到5,然后返回元音? 另外,什么样的方法才是最有效的 最像蟒蛇的方法?我的编码功能可以更短吗? 您可以假设字符串中只显示1到5的整数


谢谢

更简洁的方法是使用列表理解,检查单词中的每个字符是否为元音,如果是元音,则用相应的整数替换。解码可以通过使用反向字典的相同方式完成:

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
H7ll4
HEllo
如果你想在word中使用大写字母,你可以用c.lower替换列表中的c

但请注意,解码时,编码的元音将始终转换为小写字符,即

print(decode(encode('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')))
输出:

h2ll4
hello
H7ll4
HEllo

伟大的谢谢你,这正是我想知道的