新手在这里...尝试编写一个函数,该函数接受一个字符串并将所有字符替换为其各自的字典值。这是我所拥有的:
def alphabet_position(text):
dict = {'a':'1','b':'2','c':'3','d':'4','e':'5','f':'6','g':'7','h':'8':'i':'9','j':'10','k':'11','l':'12','m':'13','n':'14','o':'15','p':'16','q':'17','r':'18','s':'19','t':'20','u':'21','v':'22','w':'23','x':'24','y':'25','z':'26'}
text = text.lower()
for i in text:
if i in dict:
new_text = text.replace(i, dict[i])
print (new_text)
Run Code Online (Sandbox Code Playgroud)
但是当我运行时:
alphabet_position("The sunset sets at twelve o' clock.")
Run Code Online (Sandbox Code Playgroud)
我得到:
the sunset sets at twelve o' cloc11.
Run Code Online (Sandbox Code Playgroud)
这意味着它只更改字符串中的最后一个字符。有任何想法吗?非常感谢任何输入。
按照您的逻辑,您需要创建一个new_text字符串,然后迭代地替换其字母。使用您的代码,您一次只替换一个字母,然后从头开始使用原始字符串:
def alphabet_position(text):
dict = {'a':'1','b':'2','c':'3','d':'4','e':'5','f':'6','g':'7','h':'8','i':'9','j':'10','k':'11','l':'12','m':'13','n':'14','o':'15','p':'16','q':'17','r':'18','s':'19','t':'20','u':'21','v':'22','w':'23','x':'24','y':'25','z':'26'}
new_text = text.lower()
for i in new_text:
if i in dict:
new_text = new_text.replace(i, dict[i])
print (new_text)
Run Code Online (Sandbox Code Playgroud)
正如凯文所建议的那样,您可以使用set. (因为他删除了他的评论,所以在这里添加他的评论:)for i in set(new_text):请注意,这可能仅对大输入有益......
| 归档时间: |
|
| 查看次数: |
6205 次 |
| 最近记录: |