In [5]:
import random

def win():
    print(
        '''
           ======恭喜你,你赢了=======
        
    
                ."".    ."",
                |  |   /  /
                |  |  /  /
                |  | /  /
                |  |/  ;-._ 
                }  ` _/  / ;
                |  /` ) /  /
                | /  /_/\_/\
                |/  /      |
                (  ' \ '-  |
                 \    `.  /
                  |      |
                  |      |
          
          ======恭喜你,你赢了=======
        '''
    )
    
def lose():
    print(
        '''
           ======YOU LOSE=======
        
    
                

                   .-"      "-.
                  /            \
                 |              |
                 |,  .-.  .-.  ,|
                 | )(__/  \__)( |
                 |/     /\     \|
       (@_       (_     ^^     _)
  _     ) \_______\__|IIIIII|__/__________________________
 (_)@8@8{}<________|-\IIIIII/-|___________________________>
        )_/        \          /
       (@           `--------`
       
       
       
          ======YOU LOSE=======
        '''
    )
    
def get_ch_table(line):
    ch_table = []
    for ch in line:
        if ch not in ch_table:
            ch_table.append(ch)
    return ch_table

def idiom_robot(file_name):
    with open(file_name) as fh:
        text = fh.read()
    idioms = text.split()
    idiom = random.choice(idioms)
    chs = get_ch_table(text.replace(r'\n', ''))

    guess_ch_table = [ch for ch in idiom]
    while len(guess_ch_table) < 6:
        ch = random.choice(chs)
        if ch not in guess_ch_table:
            guess_ch_table.append(ch)
    
    random.shuffle(guess_ch_table)
    
    for i in range(0,6,2):
        print(guess_ch_table[i], guess_ch_table[i+1])
    
    return idiom

def main():
    filename = r'C:\Users\ASUS\Desktop\idioms.txt'
    score = 10
    while score >= 0:
        real_idiom = idiom_robot(filename)
        answer_idiom = input('请输入猜测成语,回车结束,直接回车表示退出游戏:')
        if answer_idiom == real_idiom:
            print('答对了,加十分')
            score += 10
            print('你当前的分数是:', score)
            if score == 100:
                win()
                return
        elif answer_idiom == '':
            print('退出游戏。')
            print('你最后的分数是:', score)
            return
        else:
            score -= 10
            print('答错了,减十分')
            print('成语其实是:', real_idiom)
            print('你当前的分数是:', score)
    else:
        lose()
        return

    
if __name__ == '__main()__':
    main()

In [3]:
#(先看有关ASCII码的相关知识以及码表,查维基百科或百度百科)

#输入:一个txt文件(假设全是字母的英文词,每个单词之间用单个空格隔开,假设单词最长为10个字母)

#加密:得到每个单词的长度n,随机生成一个9位的数字,将n-1与这个9位的数字连接,形成一个10位的数字,作为密匙key。
#依照key中各个数字对单词中每一个对应位置的字母进行向后移位(例:如过key中某数字为2,对应该位置的字母为a,
#加密则应移位成c,如果超过z,则回到A处继续移位),对长度不到10的单词,移位后,将移位后的单词利用随机字母补全
#到10个,最终形成以10个字母为一个单词,并以单个空格分割的加密文本,存入文件。

#解密:给定该文本文件并给定key(10位数字),恢复原来的文本。

#(提示,利用ord()及chr()函数,ord(x)是取得字符x的ASCII码,chr(n)是取得整数n(代表ASCII码)对应的字符。
#例:ord(a)的值为97,chr(97)的值为'a',因字母a的ASCII码值为97。)

fh = open(r'C:\Users\ASUS\Desktop\English.txt')
text = fh.read()
fh.close()
print(len(text))
print(text)


9
asdfghjkl

In [4]:
#输入:一个txt文件(假设全是字母的英文词,每个单词之间用单个空格隔开,假设单词最长为10个字母)
English=[]
fh = open(r'C:\Users\ASUS\Desktop\English_correct.txt', 'w')
for English in English:
    correct_English.append(idiom+'\n')
fh.writelines(correct_English)
fh.close()
print(correct_English)


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-4-8843cbb28433> in <module>()
      4 for English in English:
      5     correct_English.append(idiom+'\n')
----> 6 fh.writelines(correct_English)
      7 fh.close()
      8 print(correct_English)

NameError: name 'correct_English' is not defined

In [3]:
#加密:得到每个单词的长度n,随机生成一个9位的数字,将n-1与这个9位的数字连接,形成一个10位的数字,作为密匙key。
#依照key中各个数字对单词中每一个对应位置的字母进行向后移位(例:如过key中某数字为2,对应该位置的字母为a,
#加密则应移位成c,如果超过z,则回到A处继续移位),对长度不到10的单词,移位后,将移位后的单词利用随机字母补全
#到10个,最终形成以10个字母为一个单词,并以单个空格分割的加密文本,存入文件。
#(提示,利用ord()及chr()函数,ord(x)是取得字符x的ASCII码,chr(n)是取得整数n(代表ASCII码)对应的字符。
#例:ord(a)的值为97,chr(97)的值为'a',因字母a的ASCII码值为97。)
import random
b=len(text)
for j in range(1,b+1):
    n=len(word[j])
    a=str(random.randrange(1,10,9))
    key=str(n-1)+a
    if n==10:
        for i in range(1,11):
            if ord(word[i])+int(a[i])< ord(z):
                worf[i]=chr(ord(word[i])+int(a[i]))
            else:
                b=int(ord(word[i])+int(a[i])-ord(z))
                word[i]=chr(ord(a)+b)
        print(word,'\n')
    else:
        for i in range(1,n):
            if ord(word[i])+int(a[i])< ord(z):
                worf[i]=chr(ord(word[i])+int(a[i]))
            else:
                b=int(ord(word[i])+int(a[i])-ord(z))
                word[i]=chr(ord(a)+b)
        for i in range(n,11):
            word[i]=random.randint(97, 122,(11-n))
        print(word,'\n')   
fh = open(r'C:\Users\ASUS\Desktop\English_correct.txt', 'w')    
fh.writelines(English)
fh.close()


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-3-ea3a1c886afc> in <module>()
      6 #例:ord(a)的值为97,chr(97)的值为'a',因字母a的ASCII码值为97。)
      7 import random
----> 8 b=len(text)
      9 for j in range(1,b+1):
     10     n=len(word[j])

NameError: name 'text' is not defined

In [2]:
#解密:给定该文本文件并给定key(10位数字),恢复原来的文本。
key=('123456789')
fh = open(r'C:\Users\ASUS\Desktop\English.txt')
fh.close()