回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<pre><code>import sys
alphabet = ("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")
rotor1 = ("p","l","m","k","o","n","j","i","b","h","u","v","g","y","c","f","t","x","d","r","z","s","e","a","w","q")
rotor2 = ("e","b","h","r","k","a","s","t","i","u","m","z","g","y","q","v","d","l","c","x","n","w","o","p","f","j")
rotor3 = ("test")
rotors = (alphabet,rotor1,rotor2,rotor3)
reflector = ("test")
def menu():
print "Welcome to the Enigma machine!"
print "------------------------------"
print "1) Encrypt your message"
print "2) Change the connections on the plugboard"
print "3) Exit the program"
userchoice = raw_input("Please choose an option")
if userchoice == "1":
encrypt()
elif userchoice == "2":
plugboard()
elif userchoice == "3":
sys.exit()
def encrypt():
alphapos = []
rotor1pos = []
encryptedword = []
userinput = raw_input("Please enter the message that needs to be encrypted")
usermsglist = list(userinput)
for x in range(0,2):
for i in range(0,len(usermsglist)):
alphapos.append(rotors[x].index(usermsglist[i]))
encryptedword.append(rotor1[alphapos[i]])
usermsglist = ''.join(encryptedword)
print usermsglist
</code></pre>
<p>我正在尝试做一个for循环,使我的代码对于我的enigma机器更有效。但是当我从rotors列表中的一个项目追加时,我得到了一个错误,这个项目是列表字母表</p>
<p>我得到了错误</p>
<pre><code>IndexError: string index out of range
</code></pre>
<p>这是导致错误的代码行,特别是<strong>转子[x]</strong>部分,但如果我将其更改为字母表,程序工作正常:</p>
<pre><code>alphapos.append(rotors[x].index(usermsglist[i]))
</code></pre>