0

如果我输入“eat”,我应该得到的输出应该是“hdw”,如果我将它移动 3。但是,最终结果只是“w”。我很确定我有我需要的一切,但也许是格式?

def shifter():  
    phrase = input("Please enter a message: ")  
    key = eval(input("Please enter the number of places to be shifted: "))  
    list = phrase.split()  
    for word in list:  
        for ch in word:  
           conversion = (chr)((ord(ch) - ord("a") + key) % 26 + ord("a"))  
        newPhrase = " "  
        newPhrase = newPhrase + conversion  
    print(newPhrase)  
shifter()  
4

2 回答 2

2

问题是您在 for 循环中设置转换,而不是附加到它,所以只有单词中的最后一个字符被附加到最后的 newPhrase。

您应该附加到转换,而不是设置它。

此外,您应该在循环外部初始化newPhrase,然后在内部追加。

例子 -

def shifter():  
    phrase = input("Please enter a message: ")  
    key = eval(input("Please enter the number of places to be shifted: "))  
    list = phrase.split()
    newPhrase = ""
    for word in list:
        conversion = '' 
        for ch in word:  
           conversion += (chr)((ord(ch) - ord("a") + key) % 26 + ord("a"))  
        newPhrase = newPhrase + conversion + " " 
    print(newPhrase)  
shifter()
于 2015-07-01T04:01:38.100 回答
0

我认为这与您的缩进有关!现在,在你对变量转换做任何事情之前,你已经遍历了单词中的每个 ch,所以你被困在最后一个 ch。

尝试做转换 += ... 而不是转换 = ... (您可能需要在此之前初始化转换,但 idts。)

于 2015-07-01T04:01:29.710 回答