以下 题为练习1: (1)chapter1/task2/练习1:


In [16]:
n = int(input('请输入一个正整数,以回车结束。'))

i = 0
total = 1

for i in range(n):
    i = i + 1
    total = total * i
    
print(n,'的阶乘是:',total)


请输入一个正整数,以回车结束。3
3 的阶乘是: 6

(2)chapter1/task2/练习2:


In [1]:
n=int(input('请输入一个整数,作为加数的个数'))
m=0
total=0

for m in range(n):
    i=int(input('请输入一个整数,作为加数'))
    total=total+i
    
print(total)


请输入一个整数,作为加数的个数3
请输入一个整数,作为加数2
请输入一个整数,作为加数3
请输入一个整数,作为加数2
7

(3)chapter1/task2/练习3:


In [3]:
m=int(input('请键入1表示用户开始输入数字:'))

while m==1:
    for n in range(m):
        n=int(input('用户输入数字:'))
    m=int(input('键入1表示用户想继续输入数字,键入0表示用户不想再输入数字:'))
print('再见!')


请键入1表示用户开始输入数字:1
用户输入数字:3
键入1表示用户想继续输入数字,键入0表示用户不想再输入数字:1
用户输入数字:78
键入1表示用户想继续输入数字,键入0表示用户不想再输入数字:1
用户输入数字:4483
键入1表示用户想继续输入数字,键入0表示用户不想再输入数字:1
用户输入数字:343
键入1表示用户想继续输入数字,键入0表示用户不想再输入数字:1
用户输入数字:890
键入1表示用户想继续输入数字,键入0表示用户不想再输入数字:0
再见!

(4)chapter1/task2/练习4:


In [1]:
n=int(input('请输入数字第一个数字1:')) 
a=n 
b=n 
print('现在所有数字的和为',a)
print('现在所有数字的积为',b) 
num=1
while num==1:
    num=int(input('提示:若要继续输入,请输入数字1,否则,请输入数字0:'))
    for m in range(num): 
        m=int(input('请再输入一个数字'))
        if a<m and b<m**2: 
            print('已达到要求,可结束!!!')
        a=a+m 
        b=b*m 
        print('现在所有数字的和为',a,'现在所有数字的积为',b)


请输入数字第一个数字1:1
现在所有数字的和为 1
现在所有数字的积为 1
提示:若要继续输入,请输入数字1,否则,请输入数字0:1
请再输入一个数字2
已达到要求,可结束!!!
现在所有数字的和为 3 现在所有数字的积为 2
提示:若要继续输入,请输入数字1,否则,请输入数字0:1
请再输入一个数字3
现在所有数字的和为 6 现在所有数字的积为 6
提示:若要继续输入,请输入数字1,否则,请输入数字0:1
请再输入一个数字88
已达到要求,可结束!!!
现在所有数字的和为 94 现在所有数字的积为 528
提示:若要继续输入,请输入数字1,否则,请输入数字0:0

(5)chapter2/task4/练习1:


In [4]:
def compute_sum(end):
    i = 0
    total_n = 1

    for i in range(end):
        total_n = total_n * (i+1)

    return total_n

n = int(input('请输入第1个整数,以回车结束。'))
m = int(input('请输入第2个整数,以回车结束。'))
k = int(input('请输入第3个整数,以回车结束。'))

print('m!+n!+k!=', compute_sum(m) + compute_sum(n) + compute_sum(k))


请输入第1个整数,以回车结束。2
请输入第2个整数,以回车结束。3
请输入第3个整数,以回车结束。2
m!+n!+k!= 10

(6)chapter2/task4/练习2:


In [1]:
def compute(end):
    pro = 1
    num = 0
    i = 1.0
    j = 1.0/i
    total_m = 0
    
    for num in range(end):
        j = 1.0/i * pro
        total_m = total_m + j
        pro = pro * (-1)
        i = i + 2
        num = num + 1
        
    return total_m

n1 = int(input('请输入一个整数,以回车结束:'))
print('最终和的四倍是:',compute(n1) * 4.0)
n2 = int(input('请输入一个整数,以回车结束:'))
print('最终和的四倍是:',compute(n2) * 4.0)


请输入一个整数,以回车结束:1000
最终和的四倍是: 3.140592653839794
请输入一个整数,以回车结束:100000
最终和的四倍是: 3.1415826535897198

(7)chapter2/task4/挑战性练习:


In [12]:
def compute_sum(star,end,tap):
    i = star
    total_n = 0

    for n in range(int(end/tap)):
        total_n = total_n + i
        i = i + tap
    return total_n

m = int(input('请输入开始整数,以回车结束。'))
n = int(input('请输入结束整数,以回车结束。'))
k = int(input('请输入间隔整数,以回车结束。'))
print('最终的和是:', compute_sum(m,n,k))


请输入开始整数,以回车结束。1
请输入结束整数,以回车结束。100
请输入间隔整数,以回车结束。2
最终的和是: 2500

(8)chapter2/task5/练习1:


In [2]:
import random

a=0
sum_n=0
n=int(input('请输入整数的个数:'))
m=int(input('请输入随机整数前界:'))
k=int(input('请输入随机整数后界:'))

def test(m,k):
    number = random.randint(m,k)
    return number

for a in range(n):
    sum_n = sum_n + test(m,k)

x = sum_n/n ** 0.5
print(x)


请输入整数的个数:4
请输入随机整数前界:1
请输入随机整数后界:3
3.5

(9)chapter2/task5/练习2:


In [3]:
import random, math

n=int(input('请输入整数的个数:'))
m=int(input('请输入前界:'))
k=int(input('请输入后界:'))

def test(m,n,k):
    a=0
    sum1=0
    sum2=0
    for a in range(n):
        number = random.randint(m,k)
        num1 = math.log(number,10)
        num2 = 1/math.log(number,10)
        sum1 = sum1 + num1
        sum2 = sum2 + num2
        return sum1,sum2
        
print('西格玛log(随机整数) 和 西格玛1/log(随机整数) 分别为:',test(m,n,k))


请输入整数的个数:5
请输入前界:300
请输入后界:500
西格玛log(随机整数) 和 西格玛1/log(随机整数) 分别为: (2.696356388733332, 0.370870855269162)

(10)chapter2/task5/练习3:


In [5]:
import random
def compute(a,n):
    m=n
    s=0
    while m>0:
        num=a*(10**(m-1))*(n-m+1)
        s=s+num
        m=m-1
    return s

a=random.randint(1,9)
n=int(input('请输入和数的个数:'))
print(a,'+',a,a,'+',a,a,a,'+...+',a,a,a,a,a,'...',a,'=: ',compute(a,n))


请输入和数的个数:5
8 + 8 8 + 8 8 8 +...+ 8 8 8 8 8 ... 8 =:  98760

(11)chapter2/task5/挑战性练习:


In [1]:
import random, math

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

    
def lose():
    print(
        '''
           ======YOU LOSE,computer=======
        
    
                

                   .-"      "-.
                  /            \
                 |              |
                 |,  .-.  .-.  ,|
                 | )(__/  \__)( |
                 |/     /\     \|
       (@_       (_     ^^     _)
  _     ) \_______\__|IIIIII|__/__________________________
 (_)@8@8{}<________|-\IIIIII/-|___________________________>
        )_/        \          /
       (@           `--------`
       
       
       
          ======YOU LOSE,computer=======
        '''
    )

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

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

def show_team():
    print(
        '''
        
        whoever,我就是制作团队,就是我!
        
        ''')

def show_instruction():
    print(
        '''
        人在1~1000间随机选取一个数字,然后告诉计算机要在某个
        限定次数内将这个数字猜出来。计算机每输入一个猜测值,计算
        机会告诉计算机,猜大了,小了还是对了,猜中则游戏结束,失
        败则游戏重新开始。
        ''')

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
    min_ = 1
    max_ = n
    for guess_times in range(max_times-1):
        print('计算机现在开始猜数!')
        guess = random.randint(min_,max_)
        print(guess)
        guess_times += 1
        print('计算机一共可以猜', max_times, '次')
        print('计算机已经猜了', guess_times, '次')
        
        if guess == number:
            win()
            print('神秘数字是:', guess)
            print('计算机猜的次数比标准次数少', max_times-guess_times, '次')
            break
        elif guess > number:
            print('抱歉计算机,你猜大了')
            max_ = guess
        else:
            print('抱歉计算机,你猜小了')
            min_ = guess
            
    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. 制作团队
             =====游戏菜单=====
我帮你选择,计算机:1

        人在1~1000间随机选取一个数字,然后告诉计算机要在某个
        限定次数内将这个数字猜出来。计算机每输入一个猜测值,计算
        机会告诉计算机,猜大了,小了还是对了,猜中则游戏结束,失
        败则游戏重新开始。
        
=====游戏菜单=====
                1. 游戏说明
                2. 开始游戏
                3. 退出游戏
                4. 制作团队
             =====游戏菜单=====
我帮你选择,计算机:2
我输入一个大于0的整数,作为神秘整数的上界。10
我确定你最终要猜的那个数:5
计算机现在开始猜数!
9
计算机一共可以猜 4 次
计算机已经猜了 1 次
抱歉计算机,你猜大了
计算机现在开始猜数!
4
计算机一共可以猜 4 次
计算机已经猜了 2 次
抱歉计算机,你猜小了
计算机现在开始猜数!
6
计算机一共可以猜 4 次
计算机已经猜了 3 次
抱歉计算机,你猜大了
神秘数字是: 5

           ======YOU LOSE,computer=======
        
    
                

                   .-"      "-.
                  /                             |              |
                 |,  .-.  .-.  ,|
                 | )(__/  \__)( |
                 |/     /\     \|
       (@_       (_     ^^     _)
  _     ) \_______\__|IIIIII|__/__________________________
 (_)@8@8{}<________|-\IIIIII/-|___________________________>
        )_/        \          /
       (@           `--------`
       
       
       
          ======YOU LOSE,computer=======
        
=====游戏菜单=====
                1. 游戏说明
                2. 开始游戏
                3. 退出游戏
                4. 制作团队
             =====游戏菜单=====
我帮你选择,计算机:3

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

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

练习2:


In [9]:
list=[2,34,35,342,556,346,656]
total=0

for number in list:
    total=total+number
    
print('这个数字组的和是:',total)


这个数字组的和是: 1971

练习3:


In [22]:
list=[23,233,4345,2452,1414,742,314]
i=0
j=1

for number in list:
    for i in range(6):
        for j in range(6):
            if list[i]<list[j]:
                temp=list[i]
                list[j]=list[i]
                list[i]=temp
                
print('list中最小的数是:',list[0])


list中最小的数是: 23

练习4:


In [39]:
list=[23,65,67,245,876,240,64,943]
i=0
flag=0

num=int(input('请输入一个数字,让计算机判断是否属于list:'))
for i in range(7):
    for number in list:
        if num==list[i]:
            flag=1
            print('位置是:',i+1)
            break
    
if flag==0:
    print(-1)


请输入一个数字,让计算机判断是否属于list:240
位置是: 6

练习5:


In [43]:
import math
list1=[2.0,3.0,4.0]
list2=[4.0,5.0,6.0]
i=0
j=0

for number1 in list1:
    for number2 in list2:
        cosab=(list1[0]*list2[0]+list1[1]*list2[1]+list1[2]*list2[2])/math.sqrt((list1[0]**2+list1[1]**2+list1[2]**2)*(list2[0]**2+list2[1]**2+list2[2]**2))
print('两向量的夹角余弦时:',cosab)


两向量的夹角余弦时: 0.9946115458726394

挑战性练习:


In [7]:
i=0
j=0
k=0
n=0

for i in range(100):
    for j in range(100):
        for k in range(100):
            if(i+j+k==100 and i>4 and j>4 and k>4):
                n=n+1
                
print('一共有',n,'种分法。')


一共有 3741 种分法。