本人在python上机实践学习中,记录下的自己练习,以此为记录。
# 1编写程序,输入两个点A(x1,y1)和B(x2,y2)的坐标,求AB两点的距离(结果保留一位小数)。程序运行的输入数据和输出结果参考如下:
输入:0,0,3,4
输出:5.0
import math
x1, y1, x2, y2 = input().split(',')
x1, y1, x2, y2 = float(x1), float(y1), float(x2), float(y2)
distance = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
distance = round(distance, 1)
print(distance)
# 2
编写程序,输入球的半径,计算球的表面积和体积(结果保留两位小数)。球的表面积计算公式为,体积计算公式为4/3 πr^3,π值取3.14。
输入:2
输出:50.24 33.49
r = eval(input())
pi = 3.14
S = 4*pi*r**2
V = (4/3)*pi*r**3
print(round(S,2),round(V,2))
# 3
输入一个整数,若为奇数则输出其立方根,否则输出其平方根。可以用单分支、双分支、条件运算实现。
【运行示例1】
输入:20
输出:y的值为:4.47213595499958
【运行示例2】
输入:9
输出:y的值为:2.080083823051904
import math
a = int(input())
if a%2 == 0:
a = math.sqrt(a)
else:
a = math.pow(a,1/3)
print(f"y的值为:{a}")
# 4编写程序,计算铁路运费。已知从甲地到乙地,每张火车票托运行李不超过50公斤时,按每公斤0.25元收取行李托运费;行李若超过50公斤,则超过部分按每公斤0.35元计算托运费。输入行李重量w,计算行李托运的运费y。
【运行示例1】
输入:20
输出:行李托运的运费是:5.0元
【运行示例2】
输入:51
输出:行李托运的运费是:12.85元
a = eval(input())
if a <= 50:
print(f"行李托运的运费是:{a*0.25}元")
else:
print(f"行李托运的运费是:{a*0.35-5}元")
# or
a = eval(input())
if a <= 50:
print("行李托运的运费是:{}元".format(a*0.25))
else:
b = a*0.35-5
print("行李托运的运费是:{}元".format(b))
# 5编写程序,计算dang员每月所应缴纳的dang费。应缴纳dang费f与工资salary之间的关系函数所示。
要求:输入工资,输出党费,结果保留两位小数。
【运行示例1】
输入:200
输出:工资200,应缴党费1.00元
【运行示例2】
输入:750
输出:工资750,应缴党费11.25元
salary = eval(input())
f = 0
if salary <= 400:
f = salary*(0.005)
elif 400 <salary <=600:
f = salary*0.01
elif 600<salary<=800:
f = salary*(0.015)
elif 800<salary<=1500:
f = salary*(0.02)
elif salary>1500:
f = salary*(0.03)
print("工资{},应缴党费{:.2f}元".format(salary,f))
# 6输入三个正数,判断它们能否作为三角形的边组成三角形。若能,则输出三角形是等边三角形、等腰非直角三角形、等腰直角三角形、非等腰直角三角形、普通三角形;若不能,则输出“输入的三个数,不能作为三角形的边组成三角形。”。
【运行示例1】
输入:2,2,2
输出:三角形是等边三角形
【运行示例2】
输入:3,4,5
输出:三角形是非等腰直角三角形
【运行示例3】
输入:5,5,6
输出:三角形是等腰非直角三角形
【运行示例4】
输入:5,6,7
输出:三角形是普通三角形
【运行示例5】
输入:1,2,3
输出:输入的三个数,不能作为三角形的边组成三角形。
a, b, c = eval(input())
if a + b > c and a + c > b and b + c > a:
if a == b and a == c:
print("三角形是等边三角形")
elif a == b or a == c or b == c:
if a * a + b * b == c * c or a * a + c * c == b * b or b * b + c * c == a * a:
print("三角形是等腰直角三角形")
else:
print("三角形是等腰非直角三角形")
elif a * a + b * b == c * c or a * a + c * c == b * b or b * b + c * c == a * a:
print("三角形是非等腰直角三角形")
else:
print("三角形是普通三角形")
else:
print("输入的三个数,不能作为三角形的边组成三角形。")
# 7编程解决古代数学问题“鸡兔同笼”,即已知在同一个笼子里有鸡和兔共M只,鸡和兔的总脚数为N只,求鸡和兔各有多少只。要求:对输入的数据要考虑下面两个条件。
① 输入的总脚数N必须是偶数,否则输出“输入的脚数为奇数,不合理!”;
② 若求出的只数是负数,则输出“求出的只数为负,输入的数据不合理!”
提示:设鸡有x只,兔有y只,则有方程组:
x + y = M
2x + 4y = N
解得:x=2M-N/2, y=M-x。
【运行示例1】
输入:
19
44
输出:鸡有16只,兔有3只
【运行示例2】
输入:
20
45
输出:输入的脚数为奇数,不合理!
【运行示例3】
输入:
100
50
输出:求出的只数为负,输入的数据不合理!
M = int(input())
N = int(input())
if N % 2 != 0:
print("输入的脚数为奇数,不合理!")
else:
x = 2 * M - N / 2
y = M - x
if x < 0 or y < 0:
print("求出的只数为负,输入的数据不合理!")
else:
print(f"鸡有{int(x)}只,兔有{int(y)}只")
# 8输入年份、月份,判断该年是否是闰年,以及该月属于哪个季度、该月有多少天。要求:对输入的年份(必须为1000~2100之间的整数,包含1000和2100)和月份(必须为1~12之间的整数,包含1和12)进行校验,若输入数据不合法,应该显示出错信息。提示:判断闰年的条件是年份能被4整除但不能被100整除,或者年份能被400整除;n是否为整数的判断条件可以用“type(n)==int”、“n%1==0”或其他表达式。
【运行示例1】
输入:
2022
12
输出:
2022年不是闰年
12月是第四季度
12月有31天
【运行示例2】
输入:
2022
13
输出:
输入的年份或月份不合法!
【运行示例3】
输入:
2000
2
输出:
2000年是闰年
2月是第一季度
2月有29天
year = eval(input())
month = eval(input())
if not (1000 <= year <= 2100) or not (1 <= month <= 12) or not type(year) == int :
print("输入的年份或月份不合法!")
else:
leap_year = (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
print(f"{year}年{'是' if leap_year else '不是'}闰年")
quarter = (month - 1) // 3 + 1
li = ['一','二','三','四']
print(f"{month}月是第{li[quarter-1]}季度")
days_in_month = 31 if month in [1, 3, 5, 7, 8, 10, 12] else \
30 if month in [4, 6, 9, 11] else \
29 if leap_year else 28
print(f"{month}月有{days_in_month}天")
# 9求一元二次方程的根。输入一个一元二次方程ax2+bx+c=0的系数a、b、c,计算并输出根x1、x2(结果显示到小数点后两位)。要求:为使程序具有通用性,应全面考虑方程的根
与系数的关系。提示:关于虚根的表示,可以先求出虚根的实部和虚部,然后用complex()函数创建。例如,求得的实部是1,虚部是2,则complex(1,2)的结果为(1+2j)。有关complex()函数的使用请查阅2.4.3节中表2-12的该函数。
【运行示例1】
输入:0,0,1
输出:方程无意义
【运行示例2】
输入:0,2,1
输出:方程有一个根:-0.50
【运行示例3】
输入:1,4,3
输出:方程有两个不等实根:x1=-1.00,x2=-3.00
【运行示例4】
输入:1,-2,1
输出:方程有两个相等实根:x1=1.00,x2=1.00
【运行示例5】
输入:4,2,3
输出:方程有两个不等虚根:x1(-0.25+0.83j),x2=(-0.25-0.83j)
import math
a, b, c = eval(input())
if a == 0:
if b == 0:
print("方程无意义")
else:
x = -c / b
print("方程有一个根:{:.2f}".format(x))
else:
disc = b ** 2 - 4 * a * c
if disc > 0:
x1 = (-b + math.sqrt(disc)) / (2 * a)
x2 = (-b - math.sqrt(disc)) / (2 * a)
print("方程有两个不等实根:x1={:.2f},x2={:.2f}".format(x1,x2))
elif disc == 0:
x = -b / (2 * a)
print("方程有两个相等实根:x1={:.2f},x2={:.2f}".format(x,x))
else:
real_part = -b / (2 * a)
imaginary = math.sqrt(abs(disc)) / (2 * a)
x1 = complex(real_part, imaginary)
x2 = complex(real_part, -imaginary)
print("方程有两个不等虚根:x1=({:.2f}),x2=({:.2f})".format(x1,x2))
# 10编写程序计算某位学生可获奖学金的级别,以3门功课成绩M1、M2、M3为评奖依据。标准如下:
一等奖:符合下列条件之一者,① 各门功能的平均成绩大于95分者;② 有两门功课成绩是100分,且第三门功课成绩不低于80分者。
二等奖:符合下列条件之一者,① 各门功能的平均成绩大于90分者;② 有一门功课成绩是100分,且其他两门功课成绩不低于75分者。
三等奖:各门功课成绩不低于70分者。
【运行示例1】
输入:
100
100
90
输出:该同学获得一等奖学金。
【运行示例2】
输入:
95
90
98
输出:该同学获得二等奖学金。
【运行示例3】
输入:
85
75
70
输出:该同学获得三等奖学金。
【运行示例4】
输入:
60
88
70
输出:该同学没有获得奖学金。
M1 = int(input())
M2 = int(input())
M3 = int(input())
average_score = (M1 + M2 + M3) / 3
if average_score > 95 or (M1 == 100 and M2 == 100 and M3 >= 80) or (M1 == 100 and M2 >= 80 and M3 == 100) or (M1 >= 80 and M2 == 100 and M3 == 100):
print("该同学获得一等奖学金。")
elif average_score > 90 or (M1 == 100 and M2 >= 75 and M3 >= 75) or (M2 == 100 and M1 >= 75 and M3 >= 75) or (M3 == 100 and M1 >= 75 and M2 >= 75):
print("该同学获得二等奖学金。")
elif M1 >= 70 and M2 >= 70 and M3 >= 70:
print("该同学获得三等奖学金。")
else:
print("该同学没有获得奖学金。")