#temperature
str = input();
if str[-1]in ['F', 'f']:
c = (eval(str[0:-1])-32)/1.8
print("{:.2f}C".format(c))
elif str[-1] in ['C', 'c']:
F = 1.8*(eval(str[0:-1])) + 32
print("{:.2f}F".format(F))
else:
print("输入格式错误")
- 从一个例子说起,上面这段代码的作用是将华氏度转为摄氏度,或摄氏度转为华氏度,具体如下:
- 转换算法如下:(C表示摄氏度、F表示华氏度)
C = ( F - 32 ) / 1.8
F = C * 1.8 + 32
- 要求如下:
- (1) 输入输出的摄氏度可采用大小写字母C结尾,温度可以是整数或小数,如:12.34C指摄氏度12.34度;
- (2) 输入输出的华氏度可采用大小写字母F结尾,温度可以是整数或小数,如:87.65F指摄氏度87.65度;
- (3) 输出保留小数点后两位,输入格式错误时,输出提示:输入格式错误;
- (4) 使用input()获得测试用例输入时,不要增加提示字符串。
- 下面我们具体看代码
str = input();
从键盘读入一个字符串,这里不论从键盘输入什么类型,都进来的都按照字符串处理(str就是一个字符串),验证如下:
- 如果一次要从键盘读入多个字符串可用下面的方法:
str[-1]
这里表示字符串的最后一个字符,python中字符串中的字符有两种下标,一种和c++中一样,从左到右从0~某个正数, 还有一种就是从右到左从-1到某个负数。验证如下:
- python中对else if进行了缩写直接写成elif并且if或者else写完条件语句后要有一个冒号,如:
elif str[-1] in ['C', 'c']:
-
str[0:-1]
中间是冒号(:)不是逗号,作用是取从0到-1前的所有元素,str[M,N]取从M到N之前的所有元素。 - 格式化输出使用"{:.2f}".format();这里的大括号就像c语言中输出时的printf("%d", a), %d一样,叫做占位符,它的具体内容就是format(), 括号中的元素,如果有多个这样的大括号,那么大括号的位置对应format括号中的位置,如下:
大括号中冒号后面的.2f
是精确到小数点后的两位的意思,具体格式化后面会补充博客。print(a,b,c,d)
,输出时中间会自动加上空格:
- range(m,n)表示取从m到n-1的所有数,主要用在循环中:
同时python中for循环有一个很有用的用法,在for后面加上else,如果正常退出了,那么就执行else中的语句,负责不执行else中的语句
for i in range(3,7):
print(i)
if i == 6:
break;
else:
print("正常退出了")
- eval()去掉最外面的引号,然后执行这个语句,如果()中的内容是一个双引号引起来的数字,那么eval会去掉引号,把字符串转变为数字。如果里面是引号引起来的数学计算式,将会返回计算结果: