描述
获得用户输入的一个正整数输入,输出该数字对应的中文字符表示。
0到9对应的中文字符分别是:零一二三四五六七八九
我一开始写的代码是:
num=eval(input())
tem='零一二三四五六七八九'
for c in num:
print(tem[c],end'')
三个错误:
①for循环,不用缩进开头,到了第二行才缩进。
②for语句遍历结构,可以是字符串、文件、组合数据类型或range()函数等,但这里第一行num变量是数字,所以先不要用eval,保留字符串形式。
③print()中增加end=""参数表示输出后不增加换行,多个print()可以连续输出。
修改之后的代码:
num=input()
tem='零一二三四五六七八九'
for c in num:
print(tem[eval(c)],end='')
参考答案代码:
template = "零一二三四五六七八九"
s = input()
for c in s:
print(template[eval(c)], end="")
一个思考是:注意与参考代码的差异,怎么写能把代码写得好看一些,间隔,排布之类的。
描述
温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fahrenheit)。
请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。
转换算法如下:(C表示摄氏度、F表示华氏度)
C = ( F - 32 ) / 1.8
F = C * 1.8 + 32
要求如下:
(1) 输入输出的摄氏度采用大写字母C开头,温度可以是整数或小数,如:C12.34指摄氏度12.34度;
(2) 输入输出的华氏度采用大写字母F开头,温度可以是整数或小数,如:F87.65指华氏度87.65度;
(3) 不考虑异常输入的问题,输出保留小数点后两位;
我写的代码是:
tem=input()
if tem[0]==C:
con=eval(tem[1:])*1.8+32
print('F{:.2f}'.format(con))
if tem[0]==F:
con=(eval(tem[1:])-32)/1.8
print('C{:.2f}'.format(con))
有个小错误:if 判断语句中的C和F没有写成字符串格式,造成程序报错,修正后即ok
参考代码:
#TempConvert.py
TempStr = input()
if TempStr[0] in ['F']:
C = (eval(TempStr[1:]) - 32)/1.8
print("C{:.2f}".format(C))
elif TempStr[0] in ['C']:
F = 1.8*eval(TempStr[1:]) + 32
print("F{:.2f}".format(F))
else:
print() #不输入任何错误提示
两个小tips:
(1) 将输入字符串转换为数字时使用eval()函数,不要用int()函数,因为输入的数字可能不是整数;
(2) 采用{:.2f}将输出数字变成两位小数点表示时,即使数学上该输出值是整数,也会按照小数方式输出,例如,转换后温度为10度,输出为10.00。