【例3-2:】A 汽车从甲地开往乙地,以平均速度 45 公里
小时行驶,B汽车从乙地开往甲地,以平均速度 53公里/小时
行驶,两辆车行驶了 2小时 13分钟后相遇。编写程序,输入
A、B 的速度和行驶的时间,求甲乙两地相距多少公里?
va, vb = eval(input('输入A车和B 车的速度(以逗号隔开):')) # eval函数执行表达式,比如输入:45,53
h, m = eval(input('输入行驶时间:'))
time = h + m / 60 # 换算2小时13分是多少小时
s = time * (va + vb) # 计算A和B两辆汽车各行驶的距离,并求和
print('甲乙两地相距{:.2f}公里。'.format(s)) # 字符串format函数进行格式化
#print('甲乙两地相距%.2f公里。' % s) # 利用%进行格式化
#------------------------------------------------------
'''
输入A车和B 车的速度:45,53
输入行驶时间:2,13
甲乙两地相距217.23公里。
'''
【例 3-3:】解析几何中,求点(x,y)到直线 Ax+By+C=0 的距离公式是
,编写程序输入点的坐标(x,y)值和直线方程的参数A、B、C 的值,求点到直线的距离。
#第一种写法
x, y = eval(input('x,y:'))# 输入0,1,或者输入(0,1)
a, b, c = eval(input('方程系数A,B,C:'))
s = abs(a * x + b * y + c) / ((a * a + b * b) ** (1/2))
print('点到直线的距离:{0:.5f}'.format(s))
#第二种写法
import math
x, y = eval(input('x,y:'))
a, b, c = eval(input('方程系数A,B,C:'))
s = abs(a * x + b * y + c) / math.sqrt(a * a + b * b)
print('点到直线的距离:{0:.5f}'.format(s))
#-------------------------------------------------------
'''
x,y:0,1
方程系数A,B,C:2,3,4
点到直线的距离:1.94145
'''
【例 3-4】从键盘输入一个 3位整数,计算该数中各位数字之和。例如,输入392,各
数字之和是 3 + 9 + 2 = 14。
#方法一:
x = input('请输入一个三位数:') # input函数返回字符串
x = int(x) # 将字符串转换为整形
a = x // 100 # 获取百位数,整除100
b = x // 10 % 10 # 获取十位数
c = x % 10 # 获取个位数, 对10求余数
print(a+b+c)
#print(c*100 + b*10 +a) #获得该数的逆序数
#方法二:
x = input('请输入一个三位数:')
x = int(x)
a, b = divmod(x, 100) # 返回一个包含商和余数的元组(a // b, a % b) a 得到百位数,b得到后两位数
b, c = divmod(b, 10) # b 得到十位数,c得到个位数
print(a+b+c)
#方法三:
x = input('请输入一个三位数:')
a, b, c = map(int, x) # 采用 map 函数依次得到百、十、个位数
print(a+b+c)
【例 3-5】从键盘输入一个 3位整数,将该整数转换为英文表达。例如,输入392,输
出 three hundred and ninety two。
x = input('请输入一个三位数:')
a, b, c = map(int, x) #分离出百位a、十位b、个位c
#通过列表以及下标对应获取相应在英文,下标0代表第一个元素
eng1=['zero','one','two','three','four','five','six',\
'seven','eight','nine']
eng2=['zero','ten','twenty','thirty','forty','fifty',\
'sixty','seventy','eighty','ninety']
print('{} hundred and {}-{}'.format(eng1[a],eng2[b],eng1[c])) #3位固定格式
#--------------------------------------------------------------------------
'''
请输入一个三位数:678
six hundred and seventy-eight
'''
完成课后练习编程题
11.编写程序,实现从键盘输入学生的平时成绩、期中成绩、期末成绩,计算学生的学期总
成绩。学生的学期总成绩=平时成绩*15%+期中成绩*25%+期末成绩*60%。
12.编写程序,从键盘输入一个 3位整数,计算该数的逆序数。例如,输入 392,输出 293。
13.对于一元二次方程 ax2+bx+c=0,输入其三个系数 a、b、c,输出方程的根。注:Python
有复数类型,且可以用sqrt()直接求得复数结果。
14.有 4 个进水管(A、B、C、D)可以往水箱里注水,如果单开 A,则 a 小时注满;如果
单开 B,则 b小时可以注满;如果单开 C,则 c小时注满;如果单开 D,则d 小时可以注
满。编写程序,输入 a、 b、c、 d 的值,计算 4个水管同时注水,注满水箱需要多少小时?