一、语法基础编程练习
Test01
#摄氏温度转化为华氏温度
"""
数据:cel fah
步骤:
1.输入cel
2.根据给定公式计算fah
3.输出fah
"""
cel = eval(input())
fah = 9 / 5 * cel + 32
print("%.1f "% fah)
Test02
#计算圆柱体的体积
"""
数据:radius length area volume pi
步骤:
1.输入相应半径和长度
2.根据公式进行底面积和体积
3.输出
"""
radius, length = eval(input())
area = radius * radius * 3.14159267
volume = area * length
print(area)
print(volume)
Test03
将英尺数转换为米数
"""
数据:chi mi
步骤:
1.输入一个英尺数
2.根据转换单位要求进行转换
3.输出
"""
chi = eval(input())
mi = chi * 0.305
print(mi)
Test04
#计算小费
"""
数据:小计money 酬金率remu 总计total
步骤:
1.输入小计
2.计算需要的酬金,然后计算总计
3.输出
"""
money, remu = eval(input())
total = money * (1 + remu * 0.01)
print("%.2f" % total)
Test05
对一个整数中的各位数字求和
"""
数据:num ge shi bai nsum
步骤:
1.输入一个0到999之间的整数
2.分别求出ge shi bai 并进行求和
3.输出
"""
num = eval(input())
ge = num % 10
num //= 10
shi = num % 10
num //= 10
bai = num % 10
nsum = ge + shi + bai
print(nsum)
Test06
计算年数和天数
"""
数据:minutes hours days years
步骤:
1.输入一个分钟数
2.进行小时转换
3.进行天数转换
4.进行年的转换
5.输出
"""
minutes = eval(input())
hours = minutes // 60
days = hours // 24
years = days // 365
days = days % 365
print(years)
print(days)
Test07
#计算能量
"""
数据:M 初始温度fT 最终温度iT 热量Q
步骤:
1.输入水量,初始温度,最终温度
2.根据公式计算出热量
3.输出
"""
M, fT, iT = eval(input())
Q = M * (fT - iT) * 4184
print(Q)
Test08
分割数字
"""
数据:num ge shi bai qian
步骤:
1.输入一个四位整数
2.反向顺序显示个,十,百,千位
3.输出
"""
num = eval(input())
ge = num % 10
num //= 10
shi = num % 10
num //= 10
bai = num % 10
num //=10
qian = num % 10
print(ge)
print(shi)
print(bai)
print(qian)
Test09
计算三角形的面积
"""
数据:三个坐标值 面积area s
步骤:
1.输入三个顶点的坐标
2.根据公式计算面积
3.输出
"""
x1, x2, x3, y1, y2, y3 = eval(input())
side1 = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5
side2 = ((x2 - x3) ** 2 + (y2 - y3) ** 2) ** 0.5
side3 = ((x3 - x1) ** 2 + (y3 - y1) ** 2) ** 0.5
s = (side1 + side2 + side3) / 2
area = (s * (s - side1) * (s - side2) * (s - side3))
print("%.1f" % area)
Test10
#显示当前时间
"""
数据:输入的时区timezone,当前时间的表示zone0time,当前时区的时间yourzonetime,当前时区时间的秒数secend,当前时区时间的分钟minutes,当前时区时间的小时hours
分析:
1.根据输入的时区,在当前时间的基础上计算出对应时区的时间,并以时:分:秒的格式打印出来
2.首先,需要导入可以显示时间的库
3.用户需要输入一个时区的值,然后通过一系列计算得到该时区的时间
4.最后,打印输出
"""
import time
timezone = eval(input())
zone0time = time.time()
yourzonetime = zone0time + timezone * 60 * 60
secend = yourzonetime % 60
minutes = yourzonetime // 60 % 60
hours = yourzonetime // 60 // 60 % 24
print("%d:%d:%d"%(hours,minutes,secend))
Test11
计算三角形的三个角
"""
数据:三角形的三个点的坐标以及三角形的三个边,三个角的度数
分析:
1.首先,用户需要输入三个点的坐标(x1, y1), (x2, y2), (x3, y3)。
2.然后,通过计算三个边长a、b、c的长度
3.再利用三角形余弦定理计算出三个角A、B、C的度数
4.最后,打印输出
"""
import math
x1, y1, x2, y2, x3, y3 = eval(input())
a = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
b = math.sqrt((x3 - x2) ** 2 + (y3 - y2) ** 2)
c = math.sqrt((x3 - x1) ** 2 + (y3 - y1) ** 2)
A = math.degrees(math.acos((b ** 2 + c ** 2 - a ** 2) / (2 * b * c)))
B = math.degrees(math.acos((a ** 2 + c ** 2 - b ** 2) / (2 * a * c)))
C = math.degrees(math.acos((a ** 2 + b ** 2 - c ** 2) / (2 * a * b)))
print("A角的度数为%.2f" % A)
print("B角的度数为%.2f" % B)
print("C角的度数为%.2f" % C)
Test12
最小数量的硬币
"""
数据:输入的金额、一元硬币、两角五分硬币、一角硬币、五分硬币、一分硬币
分析:
1.首先,用户需要输入一个总金额。
2.然后,根据五个面额的硬币的从大到小的顺序来进行整数和减去的操作来得到需要的硬币数以及之后的面值
3.最后,以相应的格式进行打印
"""
total = eval(input())
oneyuan = total // 1
total %= 1
print(total)
twojiao_fivefen = total // 0.25
total = total - twojiao_fivefen * 0.25
onejiao = total // 0.1
total = total - onejiao * 0.1
fivefen = total // 0.05
total = total - fivefen * 0.05
onefen = total // 0.01
print("%d个一元硬币" % oneyuan)
print("%d个两角五分硬币" % twojiao_fivefen)
print("%d个一角硬币" % onejiao)
print("%d个五分硬币" % fivefen)
print("%d个一分硬币" % onefen)
Test13
#正多边形的面积
"""
数据:边的个数,长度,面积
分析:
1.由于需要用到数学运算,导入一个math库
2.输入两个变量
3.根据公式进行运算
4.打印输出
"""
import math
n, s =eval(input())
area = (n * s ** 2) / (4 * math.tan(3.14159267 / n))
print("%.2f" % area)
Test14
#计算身体质量指数
"""
数据:BMI kg height
步骤:
1.输入体重和身高
2.判断在那个区间
3.输出区间对应的值
"""
kg, height = eval(input())
BMI = kg / height ** 2
if BMI < 18.5:
print("超轻")
elif BMI < 25.0:
print("标准")
elif BMI < 30.0:
print("超重")
else:
print("肥胖")
Test15
判定闰年
"""
数据:输入的年份
分析:
1.获取用户输入的年份
2.根据闰年的条件进行if判断
3.打印输出
"""
years = eval(input())
if (years % 4 == 0 and years % 100 != 0) or years % 400 == 0:
print("Yes")
else:
print("No")
Test16
#中彩票
"""
数据:random r1 r2 u1 u2 unum
步骤:
1.随机生成一个两位数,并获取用户输入的一个两位数
2.根据不同情况进行判定
3.输出
"""
import random
randomNum = random.randint(10,99)
print(randomNum)
unum = eval(input())
r1 = randomNum / 10
r2 = randomNum % 10
u1 = unum / 10
u2 = unum % 10
if randomNum == unum:
print(10000)
elif r1 == u2 and r2 == u1:
print(5000)
elif r1 == u1 or r1 == u2 or r2 == u1 or r2 == u2:
print(3000)
else:
print(0)
Test17
#解一元二次方程
"""
数据:参数 a b c 解x1 x2 判别式delt
步骤:
1.输入a,b,c三个数据
2.利用公式进行delt判别式的判定,得出相应解的数量
3.通过求解公式得出解
4.输出
"""
print("输入:")
a, b, c = eval(input())
delt = b ** 2 - 4 * a * c
if delt > 0:
x1 = (-b + delt ** 0.5) / 2 * a
x2 = (-b - delt ** 0.5) / 2 * a
print("输出:")
print("%.2f" % x1)
print("%.2f" % x2)
elif delt == 0:
x1 = x2 = -b / 2* a
print("输出:")
print("%.2f" % x1)
else:
print("输出:")
print("无实数解")
Test18
解2×2线程方程
"""
数据:线性方程组的六个参数
分析:
1.用户需要输入6个参数a, b, c, d, e, f,代表线性方程组的系数。
2.程序首先判断方程组是否有解,如果a * d - b * c等于0,则输出"无解";否则,根据克莱姆法则计算出方程组的解x和y
3.打印输出
"""
a, b, c, d, e, f = eval(input())
if a * d - b * c == 0:
print("无解")
else:
x = (e * d - b * f) // (a * d - b * c)
y = (a * f - e * c) // (a * d - b * c)
print("%.1f" % x)
print("%.1f" % y)
Test19
#未来是周几
"""
数据:今日星期几,未来某天的天数
分析:
1.获取用户输入的今日星期几,和未来某天的天数
2.由于星期的进制是七进制,只需要得到这两个数据对于7的余数即可知道未来的星期
3.打印输出
"""
today, future = eval(input("请输入今天是一周内哪一天的数字和今天之后到未来某天的天数:"))
futureweek = (today + future) % 7
if futureweek == 0:
print("周日")
elif futureweek == 1:
print("周一")
elif futureweek == 2:
print("周二")
elif futureweek == 3:
print("周三")
elif futureweek == 4:
print("周四")
elif futureweek == 5:
print("周五")
else:
print("周六")
Test20
#本年中的第几天
"""
数据:年,月,日
分析:
1.获取今年的年,月,日
2.计算给定日期距离当年1月1日的天数
3.程序首先判断年份是否为闰年,根据不同月份的天数累加得到给定日期距离当年1月1日的天数
4.最后输出
"""
years, month, day = eval(input())
days = 0
if (years % 4 == 0 and years % 100 != 0) or years % 400 == 0:
for time in range(1, month):
time += 1
if time in (1, 3, 5, 7, 8, 10, 12):
days += 31
elif time in (4, 6, 9, 11):
days += 30
else:
days += 29
else:
for time in range(1, month):
time += 1
if time in (1, 3, 5, 7, 8, 10, 12):
days += 31
elif time in (4, 6, 9, 11):
days += 30
else:
days += 28
days += day
print(days)
Test21
#剪刀石头布
"""
数据:用户输入的代表石头,剪刀,布的数值,系统随机产生具有同样含义的数值
分析:
1.由于需要系统随机产生,需要导入random库
2.定义系统和用户随机产生数值的区间
3.进行各种结果的判定
4.输出相应的结果
"""
import random
randomNum = random.randint(0,2)
num = eval(input("请输入0,1,2分别代表剪刀,石头,布:"))
if randomNum == 0:
print("计算机出的剪刀")
elif randomNum == 1:
print("计算机出的石头")
else:
print("计算机出的布")
if num == 0:
print("用户出的剪刀")
elif num == 1:
print("用户出的石头")
else:
print("用户出的布")
if (randomNum == 0 and num == 2) or (randomNum == 1 and num == 0) or (randomNum == 2 and num == 1):
print("计算机赢")
elif (num == 0 and randomNum == 2) or (num == 1 and randomNum == 0) or (num == 2 and randomNum == 1):
print("用户赢")
else:
print("平局")
Test22
#三角形的周长
length1, length2, length3 = eval(input()) # 用户输入的三角形的三个边
if (length1 + length2 > length3) and (length1 + length3 > length2) and (length3 + length2 > length1): #判断是否为三角形:任意两边大于第三边
C = length1 + length2 + length3 #计算周长
print(C)
else:
print("非法")
Test23
一周的星期几
import math #导入math库,用于后面相关于数学的运算
yesrs, months, days = eval(input()) #用户输入的年,月,日
h = (days + math.floor(26 * (months + 1) // 10) + yesrs % 100 + math.floor((yesrs % 100) // 4) + math.floor((math.floor(yesrs // 100)) // 4) + 5 * math.floor(yesrs // 100)) % 7 #泽勒的一致性是一个由泽勒开发的算法,用于计算一周的星期几
if h == 1:
print("周天")
elif h == 2:
print("周一")
elif h == 3:
print("周二")
elif h == 4:
print("周三")
elif h == 5:
print("周四")
elif h == 6:
print("周五")
else:
print("周六")
Test24
#直线的交点
import sympy #sympy库提供了符号计算的功能,包括符号代数、微积分、方程求解、微分方程求解、矩阵运算等
x, y = sympy.symbols('x y')
x1, y1, x2, y2, x3, y3, x4, y4 = eval(input())
ka = (y2 - y1) / (x2 - x1) #求直线的斜率
kb = (y4 - y3) / (x4 - x3)
if ka != kb: # 两条直线的斜率不相同就终会相交
eq1 = (y1 - y2) * x - (x1 - x2) * y - (y1 - y2) * x1 + (x1 - x2) * y1 #构建第一条直线的方程。
eq2 = (y3 - y4) * x - (x3 - x4) * y - (y3 - y4) * x3 + (x3 - x4) * y3 #构建第二条直线的方程。
solutions = sympy.solve([eq1, eq2], [x, y]) # 使用SymPy解方程组,求解两条直线的交点坐标。
print(solutions)
else:
print("无解")
Test25
#回文数,由于这里只有三位数,无论从前开始还是从后开始,中间值都不会变,所以只需要比较个位和百位
num = eval(input("请输入一个三位数:"))
bai = num // 100
ge = num % 10
if bai == ge:
print("Yes")
else:
print("No")
Test26
#判断两个矩形之间的包含,重叠,相离关系
读取输入数据
rect1 = list(map(float, input().split()))
rect2 = list(map(float, input().split()))
解析矩形1的数据
x1, y1, w1, h1 = rect1
left1 = x1 - w1 / 2
right1 = x1 + w1 / 2
top1 = y1 + h1 / 2
bottom1 = y1 - h1 / 2
解析矩形2的数据
x2, y2, w2, h2 = rect2
left2 = x2 - w2 / 2
right2 = x2 + w2 / 2
top2 = y2 + h2 / 2
bottom2 = y2 - h2 / 2
"""
判断两个矩形的关系
如果任意一个矩形的左边界大于等于另一个矩形的右边界,或者上边界小于等于另一个矩形的下边界,则两个矩形相离。
如果一个矩形完全包含另一个矩形,则称为包含关系。这里判断了两种情况:一个矩形的左上角和右下角都在另一个矩形内部,或者一个矩形完全被另一个矩形包围。
如果两个矩形有部分重叠,则称为重叠关系。
"""
if left1 >= right2 or left2 >= right1 or top1 <= bottom2 or top2 <= bottom1:
relation = "相离"
elif left1 <= left2 and right1 >= right2 and top1 >= top2 and bottom1 <= bottom2:
relation = "包含"
elif left1 >= left2 and right1 <= right2 and top1 <= top2 and bottom1 >= bottom2:
relation = "包含"
else:
relation = "重叠"
输出结果
print(relation)
Test27
"""
分析:循环的四要素:
1.循环的开始
2.循环的继续条件
3.循环体
4.循环的步长
"""
print("模式A:")
for n in range(1, 7):
for i in range(1, n + 1):
print(i, end = " ")
print()
print("模式B:")
for n in range(1, 7):
for i in range(1, 8 - n):
print(i, end = " ")
print()
print("=" * 12)
for n in range(6, 0, -1):
for i in range(1, n + 1):
print(i, end = " ")
print()
"""
分析:
1.由于需要打印的有空格个数字,同时数字和空格的排序也有一定的重复性和规律
2.定义一个大的循环来进行行数的循环,然后把空格的循环和数字的循环分开进行定义
3.注意缩进,然后输出
"""
print("模式C:")
for n in range(1, 7):
for k in range(6 - n):
print(" ",end = " ")
for i in range(n, 0, -1):
print(i, end = " ")
print()
print("模式D:")
for n in range(6, 0, -1):
for k in range(6 - n):
print(" ",end = " ")
for i in range(1, n+1):
print(i, end = " ")
print()
Test28
#打印数字
for n in range(1, 8): # 行数的循环
for k in range(7 - n): #空格的数量是从6个到0个,找到规律后就去找怎么表达这个规律
print(" ",end = " ")
for x in range(1 - n, n): # 由于数值先降序后升序,这就像绝对值的函数,需要用到取绝对值的方法
print(abs(x) + 1,end = " ")
print()
Test29
打印数字
for n in range(1, 8): # 循环7次,只有7行
for k in range(7 - n): #空格的数量是从6个到0个,找到规律后就去找怎么表达这个规律
print(" ",end = " ")
for x in range(1 - n, n): #由于是先升序后降序,也是需要有绝对值
num = 2 ** (n - 1 - abs(x)) #输出的值是2的次幂
print("%-2d" %num,end = " ")
print()
Test30
打印菱形
num = eval(input("请输入一个奇数:"))
for n in range(-(num // 2), num // 2 + 1): #把没有空格的那一行当作0行,从上到下为先负后正,再通过一个具体的数据来找规律
i = abs(n) # 取n的绝对值
for k in range(i):
print("",end = " ")
for x in range(num // 2 + 1 - i):
print("*",end = " ")
print()