同济大学Python程序设计基础
实验三
1.求一元二次方程的根。
要求:输入一元二次方程的三个系数a、b、c,根据系数值,可得出如下三种根:
(1)△>0,两个实根
(2)△=0,重根,即相同根
(3)△<0,无实数根
输出两个实根x1和x2,若没有实根则输出信息:无实根。
代码片
.
from math import sqrt
#这样引入的话在使用sqrt的时候就不需要写成math.sqrt了
a,b,c=eval(input("input a,b,c:"))
deta=b**2-4*a*c
if deta>0:
x1=(-b+sqrt(deta))/(2*a)
x2=(-b-sqrt(deta))/(2*a)
print('x1=',x1,',x2=',x2)
elif deta==0:
x=(-b+sqrt(deta))/(2*a)
print('x1=x2=',x)
else:
print('无实根')
在购买某物品时,若所花的的钱x在下述范围内,所付钱y按对应折扣支付:
提示:注意计算公式和条件表达式的正确书写。
代码片
.
x=float(input('hwo much did you cost:'))
print('final money:',end=' ')
if x<1000:
print(x)
elif 1000<=x<2000:
print(0.9*x)
elif 2000<=x<3000:
print(0.8*x)
else:
print(0.7*x)
同时为了鼓励多上网,每月收费最多不超过150元。
提示:首先利用多分支if语句根据三个时间段算出费用;然后再用单分支If语句对超过时间段算出费用
代码片
.
x=int(input('上网时间:'))
print("cost:",end=' ')
if x<10:
print('30')
elif 10<=x<50:
print(30+(x-10)*2.5)
else:
if 130+(x-50)*2>150:
print(150)
else:
print(130+(x-50)*2)
输入x,y,z三个数,按从小到大的次序显示,如图2.3.1所示:
代码片
.
#这个题如果题目没说不能用函数那就直接用列表的sort函数
x,y,z=eval(input('x,y,z:'))
min=x
m=x
max=x
if y<min:
min=y
if z<min:
min=z
if y>max:
max=y
if z>max:
max=z
for i in (x,y,z):
print(i)
if i!=max and i!=min:
m=i
print(min,m,max)
利用计算机解决古代数学问题“鸡兔同笼问题”。即已知在同一笼子里有总数为M只鸡和兔,鸡和兔的总脚数为N只,求鸡和兔各有多少只?
提示:鸡、兔的只数通过已知输入的M,N列出方程可解,设鸡为x只,兔为y只,则计算公式为:
x+y=M
2x+4y=N
即:x=M-y
y=N/2-M
但不要求出荒唐的解(例3.5只鸡、-4只兔)。因此,对输入的数据要考虑下面两个条件:
①对输入的总脚数N必须是偶数,否则提示数据错的原因;
②若求出的头数为负数,提示数据错的原因。
代码片
.
a,b=eval(input("请输入头的数量和腿的总数:"))
if b%2!=0:
print("总脚数必须是偶数!")
elif a<0:
print("头数不能小于0!")
else:
y=b/2-a
x=a-y
if x>=0 and y>=0 and int(x)==x and int(y)==y:
print('鸡有',x,"只,兔子有",y,"只")
else:
print("输入数据有误")