我一直在嘗試解決這個問題,我不允許在我的解決方案中使用庫或模塊,我需要使用回圈:
用它在字母表中的位置替換每個字母。
如果文本中的任何內容不是字母,請忽略它并且不要回傳它。
“a” = 1,“b” = 2,等等。
我的解決方案:
string = ("Hello")
def letter_to_number(text):
translated = ""
for i, j in enumerate("abcdefghijklmnopqrstuvwxyz"):
for letter in text.lower():
if len(text) == 1:
if letter in j:
translated = translated str(i 1)
else:
if letter in j:
translated = translated str(i 1) " "
return translated
print(letter_to_number(string))
這將回傳正確的數字。但是,它回傳按升序排序的字串。像這樣:(5、8、12、12、15)
我需要它回傳 (8, 5, 12, 12, 15) 。
PS我仍然是python的初學者。
uj5u.com熱心網友回復:
您需要列舉輸入字串而不是字母表。然后,您需要檢查各個字母是否在您的字母表中。如果它們是,那么您可以獲得索引(并在給定的基礎上添加 1)。
問題中的代碼表明回傳值應該是一個字串。串列會更好/更有用。然而:
def letter_to_number(text):
alphabet = '_abcdefghijklmnopqrstuvwxyz'
result = ()
for letter in text:
if (index := alphabet.find(letter)) > 0:
result = (index,)
return str(result)
print(letter_to_number('hello'))
輸出:
(8, 5, 12, 12, 15)
uj5u.com熱心網友回復:
請注意,這是您回圈的方式:
for i, j in enumerate("abcdefghijklmnopqrstuvwxyz"):
for letter in text.lower():
這意味著,對于其中的每個字母text,您將不斷地迭代字母 a..z。你將按字母順序開始
您可能打算以相反的順序使用它:
for letter in text.lower():
for i, j in enumerate("abcdefghijklmnopqrstuvwxyz"):
只是在這里給你一些額外的提示,沒有必要每次都遍歷這些字母。我假設你還沒有學過字典,但基本上你可以有這樣的東西:
letters = {"a":1, "b":2, ..., "z":26}
您可以將其視為鍵值映射(a映射到1、b映射到2等)。
您可以像這樣訪問這些值:
def letter_to_number(text):
translated = ""
letters = {"a":1, "b":2, ..., "z":26}
for letter in text.lower():
if letter in letters:
translated = translated str(letters[i]) " "
return translated
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/510297.html
標籤:Python细绳循环
上一篇:從字串質詢中洗掉重復項
