题目一 整数的进制转换
给定一个整数数字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,'米'))
注意,这里四舍五入了!