整数进制转换与温度转换——字符串格式化format()的用法实践

题目一    整数的进制转换

给定一个整数数字0x1010,请依次输出Python语言中十六进制、十进制、八进制和二进制表示形式,使用英文逗号分隔。

初试错误:

print('{:x},{}{:o},{:b}'.format(0x1010))

正确结果:

print("0x{0:x},{0},0o{0:o},0b{0:b}".format(0x1010))

初试失败之要点记录:

1、str.format()方法中的参数索引号要写进占位符/槽中

2、进制的引导符号需要添加数字前

进制种类 引导符号 联想记忆
十进制
二进制 0b或0B binary
八进制 0o或0O 横躺8
十六进制 0x或0X six

 

‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬题目二   温度转换温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fabrenheit)。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬转换算法如下:(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()获得测试用例输入时,不要增加提示字符串。

初试失败:

s = input()

#数字结果——!此处的条件语句语法错误!
result = eval(s[:-1])*1.8+32 if 'C'or'c'in s else (eval(s[:-1])-32 )/1.8#s[m:n]只取到n-1
#字符单位
unit = 'F' if 'C'or'c'in s else 'C'#注意单位转换

print('{0:.2f}{1}'.format(result,unit))

定位到 if <条件>语法错误,进行修改:列表['C','c']也可以写作字符串'Cc'

s = input()

#数字结果——!此处的条件语句语法错误!
result = eval(s[:-1])*1.8+32 if s[-1] in ['C','c'] else (eval(s[:-1])-32 )/1.8#s[m:n]只取到n-1
#字符单位
unit = 'F' if s[-1] in ['C','c'] else 'C'#注意单位转换

print('{0:.2f}{1}'.format(result,unit))

添加异常提示,最终正确结果:

s = input()

#数字结果——!此处的条件语句语法错误!
result = eval(s[:-1])*1.8+32 if s[-1] in ['C','c'] else (eval(s[:-1])-32 )/1.8#s[m:n]只取到n-1
#字符单位
unit = 'F' if s[-1] in ['C','c'] else 'C'#注意单位转换

#仔细审题,注意输入错误时打印提示
print('输入格式错误') if s[-1] not in ['C','c','F','f'] else print('{0:.2f}{1}'.format(result,unit))

要点记录:

1、二分支结构的简单表达式:<表达式1> if <条件> else <表达式2> 

<表达式2> 中省略赋值等式,只写值

#注意<表达式2>中 token = 省略
token = "偶数" if s % 2 == 0  else "奇数" 

2、str.format() 数字格式化

str.format()方法中的参数可以是字符串或数字格式,但要与占位符/槽中的操作匹配。

例如以下代码中,a只能取数字,否则报错:ValueError: Unknown format code 'f' for object of type 'str'

‘{:.2f}’.format(a)
print('{0:.2f}{1}'.format(12.345,'米'))

注意,这里四舍五入了!

 

你可能感兴趣的:(Python学习笔记)