import random, math

def test():
    i = 0
    total = 0
    average = 0
    number = random.randint(m, k)
    
    while i < n:
        i += 1
        total += number
        number = random.randint(m, k)
        print('随机数是：', number)
        average = int(total/n)
        
    return math.sqrt(average)
    
#主程序
m=int(input('请输入一个整数下限：'))
k=int(input('请输入一个整数上限：'))
n=int(input('随机整数的个数是：'))
test()

"""
Explanation: 练习 1：求n个随机整数均值的平方根，整数范围在m与k之间。
End of explanation
"""


import random, math

def test1():
    i = 0
    total = 0
    number = random.randint(m,k)
    result = math.log10(number)
    
    while i < n:
        i += 1
        number = random.randint(m,k)
        print('执行1的随机整数是：', number)
        result += math.log10(number)
    
    return result    
        
        
def test2():
    i = 0
    total = 0
    number = random.randint(m,k)
    result = 1/(math.log10(number))
    
    while i < n:
        i += 1
        number = random.randint(m,k)
        print('执行2的随机整数是：', number)
        result += 1/(math.log10(number))
    
    return result  
    
#主程序
n = int(input('随机整数的个数是：'))
m = int(input('请输入一个整数下限：'))
k = int(input('请输入一个整数上限：'))

print()
print('执行1的结果是：', test1())
print()
print('执行2的结果是：', test2())

"""
Explanation: 练习 2：写函数，共n个随机整数，整数范围在m与k之间，（n,m,k由用户输入）。求1：西格玛log(随机整数)，2：西格玛1/log(随机整数)
End of explanation
"""


import random

def test():
    a = random.randint(1,9)
    print('随机整数a是：', a)
    i = 0
    s = 0
    number = 0
    total = 0
    
    
    while i < n:
        s = 10**i
        number += a * s
        total += number
        i += 1
       
    return total

#主程序
n = int(input('需要相加的个数是：'))
print('结果是：', test())

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


import random, math


def win():
    print(
        '''
           ======YOU WIN=======
        
    
                ."".    ."",
                |  |   /  /
                |  |  /  /
                |  | /  /
                |  |/  ;-._ 
                }  ` _/  / ;
                |  /` ) /  /
                | /  /_/\_/\
                |/  /      |
                (  ' \ '-  |
                 \    `.  /
                  |      |
                  |      |
          
           ======YOU WIN=======
        '''
    )
    
def lose():
    print(
        '''
           ======YOU LOSE=======
        
    
                

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

       
          ======GAME OVER=======
        '''
    )

def show_team():
    print('''
        ***声明***
    本游戏由PXS小机智开发''')

def show_instruction():
    print('''
             游戏说明
玩家选择一个任意整数，计算机来猜测该数。
若计算机在规定次数内猜中该数，则计算机获胜。
若规定次数内没有猜中，则玩家获胜。''')
    
def menu():
    print('''
             =====游戏菜单=====
                1. 游戏说明
                2. 开始游戏
                3. 退出游戏
                4. 制作团队
             =====游戏菜单=====''')    

def guess_game():
    n = int(input('请输入一个大于0的整数，作为神秘整数的上界，回车结束。'))
    max_times = int(math.log(n,2))
    print('规定猜测次数是：', max_times, '次')
    print()
    guess = random.randint(1, n)
    print('我猜这个数是：', guess)
    guess_times = 1
    max_number = n
    min_number = 1
    
    while guess_times < max_times:
        answer = input('我猜对了吗？（请输入“对”或“不对”）')
        if answer == '对':
            print(lose())
            break
        if answer == '不对':
            x = input('我猜大了还是小了？（请输入“大”或“小”）')
            print()
            if x == '大':
                max_number = guess-1
                guess = random.randint(min_number,max_number)
                print('我猜这个数是：', guess)
                guess_times += 1               
                print('我已经猜了', guess_times, '次')
                print()
                if guess_times == max_times:
                    ask = input('''***猜测已达规定次数*** 
                                我猜对了吗？（请输入“对”或“不对”）''')
                    if ask == '不对':
                        end()
                        break
                    else:
                        lose()
            if x == '小':
                min_number = guess + 1
                guess = random.randint(min_number,max_number)
                print('我猜这个数是：', guess)
                guess_times += 1
                print('我已经猜了', guess_times, '次')
                print()
                if guess_times == max_times:
                    ask = input('''***猜测已达规定次数*** 
                                我猜对了吗？（请输入“对”或“不对”）''')
                    if ask == '不对':
                        end()
                        break
                    else:
                        lose()
    
def end():
    a = input('你的神秘数字是：')
    print()
    print('原来是', a, '啊！')
    win()

#主函数
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()

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


