簡體   English   中英

返回 python 中的列表時語法無效

[英]invalid syntax in returning a list in python

def rotate_word(word,number):
    new_word_number=[]
    new_word=[]
    for letter in word:
        new_word_number.append(ord(letter)+number)
        new_word.append(chr(new_word_number))
    return new_word   
                        
        
rotate_word('xyz',2)

此代碼顯示錯誤 TypeError: an integer is required (got type list)

不知道您要實現什么,但這里有一個可以工作的代碼:

def rotate_word(word, number):
    new_word = []
    for letter in word:
        new_word.append(chr(ord(letter) + number))
    return ''.join(new_word)


print(rotate_word('xyz', 2))

將打印z{|

請注意,您不需要兩個中間列表。 此外,使用''.join(your_list)將允許將結果列表合並為一個字符串,以便您的 function 返回它給出的相同類型。

順便說一句,如果您的初始目標是實現像 rot13 (在您的情況下為 rot2)這樣的字符旋轉,您可以使用更智能的 function 也只處理字母字符以使 output 可移植(僅可打印字符):

def rotX(string: str, shift: int = 13):
    """
    RotX for only A-Z and a-z characters
    """
    try:
        return ''.join(
            [chr(ord(n) + (shift if 'Z' < n < 'n' or n < 'N' else -shift)) if ('a' <= n <= 'z' or 'A' <= n <= 'Z') else n for
             n in
             string])
    except TypeError:
        return None

result = rotX('xyz', 2)
reverse_result = rotX(result, -2)
print(result)
print(reverse_result)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM