实验4 循环结构与函数
**实验目的和要求:**1.掌握程序的循环结构;运用for语句和while语句实现循环结构;掌握随机库的使用方法; 2.掌握函数的定义和调用方法;理解函数的参数传递过程以及变量的作用范围。
1.计算三维空间某点距离原点的欧式距离
描述
欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义。三维空间里点a和b的坐标如果分别为a(x1,y1,z1)、b(x2,y2,z2),则ab的距离的计算机公式是dist(a,b) = √( (x1-x2)2+(y1-y2)2+(z1-z2)^2 )
编写函数计算两点的欧式距离,并输出(保留小数点后两位)。
要求:将虚线下的代码复制到答题区域、补充完善后再提交。
-------------------------------------------------------------------------------------------------------------------------
#请在这里定义distance函数,计算点(x,y,z)与原点的距离值并返回
x,y,z=input().split(",")
d=distance(float(x),float(y),float(z))#调用distance函数
print("{:.2f}".format(d))#输出距离值,保留三维小数
#代码区结束
#定义distance函数,计算点(x,y,z)与原点的距离值并返回
def distance(x, y, z):
return ((x**2 + y**2 + z**2)**(1 / 2))
x, y, z = input().split(",")
#调用distance函数
d = distance(
float(x), float(y), float(z)
)
#输出距离值,保留2位小数
print("{:.2f}".format(d))
2.完美立方
描述
费马大定理断言:当整数n>2时,关于a,b,c的方程an=bn+cn没有正整数解。该定理被提出后,历经三百多年,经历多人猜想辩证,最终在1995年被英国数学家安德鲁·怀尔斯证明。当然,可以找到大于1的4个整数满足完美立方等式:a3=b3+c3+d3(例如123=63+83+103)。编写一个程序,对于任意给定的正整数N(N ≤100),寻找所有的四元组(a,b,c,d),满足a3=b3+c3+d3,其中1<a,b,c,d≤N。
import math
N = int(input())
if N > 100 or N < 2:
exit()
for a in range(2, N + 1):
for b in range(2, a):
for c in range(b, a): #避免输出不同排序的一组
for d in range(c, a): #避免输出不同排序的一组
if math.pow(a, 3) == math.pow(b, 3) + math.pow(c, 3) + math.pow(d, 3):
print("Cube = {},Tripe = ({},{},{})".format(a, b, c, d))
3.羊车门问题
描述
有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。
import random
'''
list:doorlist -> 未知门列表
int:do -> 执行换门后匹配成功次数
int:dont -> 不执行换门后匹配成功次数
str:choice -> 第一次选择的那个门后是什么
'''
do, dont = 0, 0
n = int(input()) #模拟次数
for _ in range(n):
doorlist = ['sheep', 'sheep', 'car'] #门后的物品
choice = random.choice(doorlist) #模拟行为:选择门
doorlist.remove(choice) #列表里减去选择的门
doorlist.remove('sheep') #模拟行为:主持人开门
if choice == 'car': #不换门时,从选择的门进行匹配
dont += 1
if doorlist[0] == 'car': #换门时,从列表剩余项匹配
do += 1
print("不换选择得到汽车的机会:{:.1f}\n换选择得到汽车的机会:{:.1f}".format(dont / n, do / n))