2014-09-11 26 views
0

我和我的代码有点不一样。我试图做到这一点,所以一旦我输入消息,消息就会被加密成新的加密消息。之后,用户被要求猜测其中一个字母是什么,如果这个猜测是正确的,那么加密的信息将被打印出来,解密后的信件现在可以正确显示,并显示为大写。我的问题是保留解密的信件只是猜测,一旦用户正确猜测它,永久保持显示。这样用户就可以看到他已经正确地猜出了字母,并且信息会开始显现。这是我的完整代码,我认为我需要帮助的区域在底部分开。如何用正确的猜字母打印加密信息?

import random 
message1 = raw_input("Enter 50 to 150 characters: ") 
message1 = message1.lower() 
message2 = "" 
b = "" 
insults = ("You suck, try again.", "Are you this dumb?", "You're a genius. JK, idiot.", "Youre making me fall asleep." "You got this, next time, probably not.") 
compliments = ("You are the best.", "How do you do it?", "Teach me senpai.", "Your IQ must be over like 150!", "I dream to be as smart as you.") 
alpha = ("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") 
cypher = list(alpha) 
random.shuffle(cypher) 

if len(message1)<50: 
    print insults[random.randint(0,4)] 
    exit() 
elif len(message1)>150: 
    print insults[random.randint(0,4)] 
    exit() 
else: 
    message2= "" 
    for b in message1: 
     if not b.isalpha(): 
      message2 += b; 
     else: 
      message2 += cypher[(ord(b)- ord('a'))] 

    print message1 
    print message2 
    print alpha 
    print cypher 


number_guess = 0 
while number_guess < 25 and message2.lower() != message1: 
    number_guess + 1 
    guess = raw_input("Enter a guess in the form a=b:") 
    guess = guess.lower() 
    if len(guess) != 3: 
     print insults[random.randint(0,4)] 
    elif not guess[0].isalpha(): 
     print insults[random.randint(0,4)] 
    elif not guess[2].isalpha(): 
     print insults[random.randint(0,4)] 
    elif guess[1] != (chr(61)): 
    print insults[random.randint(0,4)] 
    exit() 

    letter = cypher[(ord(guess[2])-ord('a'))] 
    print letter 
    if letter == guess[0]: 
     print message2.replace(guess[0], guess[2].upper()) 
     print compliments[random.randint(0,4)] 
    else: 
     print insults[random.randint(0,4)] 

在哪里,我相信这个问题会得到解决:

 letter = cypher[(ord(guess[2])-ord('a'))] 
    print letter 
    if letter == guess[0]: 
     print message2.replace(guess[0], guess[2].upper()) 
     print compliments[random.randint(0,4)] 
    else: 
     print insults[random.randint(0,4)] 

回答

0

问题是与您的message2.replace()的使用。 replace()不会修改原始字符串,但它只是返回字符串的修改版本。

你可能喜欢的东西取代:

message2 = message2.replace(guess[0], guess[2].upper()) 
print message2 
+1

谢谢!我非常接近想出来,但我不确定我可以没有你的评论,我欣赏它! – kanyeezus2020 2014-09-11 01:33:48