In [6]:
#挑战性练习:仿照task5,将猜数游戏改成由用户随便选择一个整数,让计算机来猜测的猜数游戏,要求和task5中人猜测的方法类似,
#但是人机角色对换,由人来判断猜测是大、小还是相等,请写出完整的猜数游戏。



import random,math

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

                   .-"      "-.
                  /            \
                 |              |
                 |,  .-.  .-.  ,|
                 | )(__/  \__)( |
                 |/     /\     \|
       (@_       (_     ^^     _)
  _     ) \_______\__|IIIIII|__/__________________________
 (_)@8@8{}<________|-\IIIIII/-|___________________________>
        )_/        \          /
       (@           `--------`
       
       
       
          ======YOU LOSE=======
        '''
    )
        
def game_over ():
    print(
        '''
           ======GAME OVER=======
        
             _________ 
            / ======= \ 
           / __________\ 
          | ___________ | 
          | | -       | | 
          | |         | | 
          | |_________| |________________ 
          \=____________/                ) 
          / """"""""""" \               / 
         / ::::::::::::: \          =D-' 
        (_________________) 

       
          ======GAME OVER=======
        '''
    )
    
def show_team ():
    print ('乱世一人舞倾情制作,hiahiahiahia~')
    
def show_instruction():
    print ('''输入一个数作为神秘整数的上界
              输入你的答案,直到计算机猜中为止。''')
    
def menu():
    print ('''====游戏菜单====
                 1.游戏说明
                 2.开始游戏
                 3.退出游戏
                 4.制作团队
              ====游戏菜单====''')
    
def guess_game ():
    n = int (input ('请输入一个大于0的整数,作为神秘整数的上界,回车结束'))
    number = int (input ('请输入您的答案:'))
    max_times = math.ceil(math.log(n,2))
    guess_times = 0
    guess = random.randint(1,n)
    guess1 = guess
    while guess_times < max_times:
        
        guess_times += 1
        print ('计算机猜测的数是:',guess)
        print ('一共可以猜',max_times,'次')
        print ('计算机已经猜了',guess_times,'次')
        
        if guess == number:
            win()
            print ('神秘数字是:',guess)
            print ('计算机还可以猜',max_times - guess_times ,'次')
            break
        elif guess > number:
            print ('不好意思,计算机你猜大了')
            guess2 = guess
            if number > guess1:
                guess = random.randint(guess1 + 1,guess2 - 1)
            else:
                guess = random.randint(1,guess2 - 1)
            print ('你还可以猜',max_times - guess_times,'次')
        else:
            print ('抱歉,计算机你又猜小了')
            guess2 = guess
            if number < guess1:
                 guess = random.randint(guess2 + 1,guess1 - 1)
            else:
                 guess = random.randint(guess2 + 1,n)
            print ('你还可以猜',max_times - guess_times,'次')
        guess1 = guess2
    else:
        print ('神秘数字是',number)
        lose()
        
#主函数
def main ():
    while True:
        menu ()
        choice = int(input('请输入你的选择'))
        if choice == 1:
            show_instruction()
        elif choice == 2:
            guess_game()
        elif choice == 3:
            game_over()
            break
        else:
            show_team()
            
#主程序
if __name__ == '__main__':
    main()


====游戏菜单====
                 1.游戏说明
                 2.开始游戏
                 3.退出游戏
                 4.制作团队
              ====游戏菜单====
请输入你的选择2
请输入一个大于0的整数,作为神秘整数的上界,回车结束14
请输入您的答案:7
计算机猜测的数是: 7
一共可以猜 4 次
计算机已经猜了 1 次

           ======恭喜你,你赢了=======
        
    
                ."".    ."",
                |  |   /  /
                |  |  /  /
                |  | /  /
                |  |/  ;-._ 
                }  ` _/  / ;
                |  /` ) /  /
                | /  /_/\_/                |/  /      |
                (  ' \ '-  |
                 \    `.  /
                  |      |
                  |      |
          
          ======恭喜你,你赢了=======
        
神秘数字是: 7
计算机还可以猜 3 次
====游戏菜单====
                 1.游戏说明
                 2.开始游戏
                 3.退出游戏
                 4.制作团队
              ====游戏菜单====
请输入你的选择2
请输入一个大于0的整数,作为神秘整数的上界,回车结束14
请输入您的答案:7
计算机猜测的数是: 10
一共可以猜 4 次
计算机已经猜了 1 次
不好意思,计算机你猜大了
你还可以猜 3 次
计算机猜测的数是: 4
一共可以猜 4 次
计算机已经猜了 2 次
抱歉,计算机你又猜小了
你还可以猜 2 次
计算机猜测的数是: 5
一共可以猜 4 次
计算机已经猜了 3 次
抱歉,计算机你又猜小了
你还可以猜 1 次
计算机猜测的数是: 7
一共可以猜 4 次
计算机已经猜了 4 次

           ======恭喜你,你赢了=======
        
    
                ."".    ."",
                |  |   /  /
                |  |  /  /
                |  | /  /
                |  |/  ;-._ 
                }  ` _/  / ;
                |  /` ) /  /
                | /  /_/\_/                |/  /      |
                (  ' \ '-  |
                 \    `.  /
                  |      |
                  |      |
          
          ======恭喜你,你赢了=======
        
神秘数字是: 7
计算机还可以猜 0 次
====游戏菜单====
                 1.游戏说明
                 2.开始游戏
                 3.退出游戏
                 4.制作团队
              ====游戏菜单====
请输入你的选择3

           ======GAME OVER=======
        
             _________ 
            / ======= \ 
           / __________\ 
          | ___________ | 
          | | -       | | 
          | |         | | 
          | |_________| |________________ 
          \=____________/                ) 
          / """"""""""" \               / 
         / ::::::::::::: \          =D-' 
        (_________________) 

       
          ======GAME OVER=======
        

In [9]:
#练习 1:写函数,求n个随机整数均值的平方根,整数范围在m与k之间。

import random,math

def avg_of_randoms(m,k,n):
    i = 0
    total_num = 0
    avg = 0
    gen = 0
    while i < n:
        number = random.randint(m,k)
        total_num += number
        i += 1
    else:
        avg = total_num / n
        gen =  math.sqrt(avg) 
        print ('n个随机整数均值的平方根为:',gen)
        
def main ():
    m = int (input ('请输入取值范围的下限:'))
    k = int (input ('请输入取值范围的上限:'))
    n = int (input ('请输入取值个数:'))
    avg_of_randoms(m,k,n)
    
#主程序
if __name__ == '__main__':
    main()


请输入取值范围的下限:1
请输入取值范围的上限:3
请输入取值个数:1
n个随机整数均值的平方根为: 1.4142135623730951

In [10]:
#写函数,共n个随机整数,整数范围在m与k之间,求西格玛log(随机整数)及西格玛1/log(随机整数)

import random,math

def sum_of_logRandoms(m,k,n):
    i = 0
    temp1 = 0
    temp2 = 0 
    total_num1 = 0
    total_num2 = 0
    while i < n:
        number = random.randint(m,k)
        temp1 = math.log(number,2) 
        total_num1 += temp1
        temp2 = 1 / temp1
        total_num2 += temp2
        i += 1
    else: 
        print ('n个在m,k之间的随机整数对数求和为:',total_num1)
        print ('n个在m,k之间的随机整数对数求和为:',total_num2)
        

        
def main ():
    m = int (input ('请输入取值范围的下限:'))
    k = int (input ('请输入取值范围的上限:'))
    n = int (input ('请输入取值个数:'))
    sum_of_logRandoms(m,k,n)
    
#主程序
if __name__ == '__main__':
    main()


请输入取值范围的下限:1
请输入取值范围的上限:4
请输入取值个数:1
n个在m,k之间的随机整数对数求和为: 1.0
n个在m,k之间的随机整数对数求和为: 1.0

In [11]:
#练习 3:写函数,求s=a+aa+aaa+aaaa+aa...a的值,其中a是[1,9]之间的随机整数。
#例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘输入

import random,math

def randoms_plus (n):
    total_num = 0
    i = 0
    base_num = random.randint(1,9)

    while i < n:
        j = i
        number = 0
        while j >= 0:
            number += base_num * pow(10,j) 
            j -= 1
        total_num += number
        i += 1
        
    print (n,'个以',base_num,'为基本的数a+aa+aaa+aaaa+aa...a的值为:',total_num)
    
def main():
    n = int (input('请输入相加整数的个数并以回车结束:'))
    randoms_plus(n)

#主程序
if __name__ == '__main__':
    main()


请输入相加整数的个数并以回车结束:3
3 个以 9 为基本的数a+aa+aaa+aaaa+aa...a的值为: 1107