实例1: 温度转换
这是”实例”题,与课上讲解实例相同,请作答检验学习效果。
温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fahrenheit)。请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。
转换算法如下:(C表示摄氏度、F表示华氏度)
C = ( F - 32 ) / 1.8
F = C * 1.8 + 32
要求如下:
- 输入输出的摄氏度可采用大小写字母C结尾,温度可以是整数或小数,如:12.34C指摄氏度12.34度;
- 输入输出的华氏度可采用大小写字母F结尾,温度可以是整数或小数,如:87.65F指华氏度87.65度;
- 输出保留小数点后两位,输入格式错误时,输出提示:输入格式错误;
- 使用input()获得测试用例输入时,不要增加提示字符串。
输入示例1
12.34C
输出示例1
54.21F
输入示例2
87.65F
输出示例2
54.21F
我的解答
t = input(); # 分号是错的
if t[-1] in ['F', 'f']:
c = ( eval(t[0:-1]) - 32 ) / 1.8
print("{:.2f}C".format(c))
elif t[-1] in ['C', 'c']:
f = eval(t[0:-1]) * 1.8 + 32
print("{:.2f}F".format(f))
else:
print("输入格式错误")
总结
- 第一句打了
分号
,Python不需要分号!!! - 不注意
缩进
导致代码逻辑错误 - 忘记将字符串转换为数值直接做运算,
eval()
-
print()
格式输出,把中间的小数点打成逗号 - 还是
print()
,把C写到双引号外面 -
if
后面忘记加分号
温度转换 II
温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fahrenheit)。
请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。
转换算法如下:(C表示摄氏度、F表示华氏度)
C = ( F - 32 ) / 1.8
F = C * 1.8 + 32
要求如下:
- 输入输出的摄氏度采用大写字母C开头,温度可以是整数或小数,如:C12.34指摄氏度12.34度;
- 输入输出的华氏度采用大写字母F开头,温度可以是整数或小数,如:F87.65指华氏度87.65度;
- 不考虑异常输入的问题,输出保留小数点后两位;
- 使用input()获得测试用例输入时,不要增加提示字符串。
输入示例1
C12.34
输出示例1
F54.21
输入示例2
F87.65
输出示例2
C30.92
我的解答
t = input()
if t[0] == 'F':
c = (eval(t[1:len(t)]) - 32) / 1.8
print("C{:.2f}".format(c))
elif t[0] == 'C':
f = eval(t[1:len(t)]) * 1.8 + 32
print("F{:.2f}".format(f))
总结
Python3字符串可以在分号内冒号来实现取部分,[1:]
表示从下标为1,即第二个元素开始,而[1:len(t)]
的冒号后面的标示到len(t)下标结束,但不包括这个下标,打印范围是[1,len-1]
标准答案中是没有len(),省略则表示一直打印到末尾
在下一段代码出现了这一个用法
money = input()
if money[0:3] == "RMB":
USD = eval(money[3:]) / 6.78
print("USD{:.2f}".format(USD))
elif money[0:3] == "USD":
RMB = eval(money[3:]) * 6.78
print("RMB{:.2f}".format(RMB))