以下 题为练习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)
(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)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('再见!')
(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)
(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))
(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)
(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))
(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)
(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))
(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))
(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()
练习2:
In [9]:
list=[2,34,35,342,556,346,656]
total=0
for number in list:
total=total+number
print('这个数字组的和是:',total)
练习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])
练习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)
练习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)
挑战性练习:
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,'种分法。')