如果我在程序中输入5却没有其他字母或数字,为什么我的程序将s和c错位?

时间:2018-10-03 12:08:02

标签: python arrays loops eval

此程序旨在询问您一个句子和一个数字,然后将所有字母都按字母向下移动所输入的数字,然后让您通过减去输入的内容来将其撤消。由于某些原因,当您输入export class AppComponent { @ViewChild('userName') userInput: ElementRef; constructor() {} someFunction(){ let event = new KeyboardEvent('keyup',{'bubbles':true}); this.userInput.nativeElement.dispatchEvent(event); } onKeyup(event){ console.log(event) } onKeydown(event){ console.log(event) } } 作为班次时,字母s会转变为不同的随机字母,而当您尝试向后退时,却无法给您正确的单词,我也不知道为什么。

5

1 个答案:

答案 0 :(得分:0)

问题是您定义了一个全局x变量,也定义了一个局部变量。局部变量掩盖了全局变量,因此eval("x")的结果不再是您期望的结果。

解决方案:在for循环中使用其他变量。

您的代码有很多可以改进的地方。您可以利用模运算符和ord函数,而无需使用全部26个字母名称。

这是for循环在没有全部内容的情况下的样子:

if 0 < shift < 11:
    for i, ch in enumerate(message): 
        if ch != " ":
            message[i] = chr((ord(ch)-ord('a')+shift)%26+ord('a'))

不相关:请注意,retry != ("y" or "n")不能那样工作。您应该做retry not in "yn"