文章目录
- 温度转换异常处理
- 百分制成绩转换五分制F
- 正整数A+B
- 奇偶求和
- 判断数据类型
温度转换异常处理
描述
温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fabrenheit)。
请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。
转换算法如下:(C表示摄氏度、F表示华氏度)
C = ( F - 32 ) / 1.8
F = C * 1.8 + 32
要求如下:
(1) 输入输出的摄氏度采用大写字母 C 或小写字母 c 结尾,温度可以是整数或小数,如:12.34C 指摄氏度 12.34 度;
(2) 输入输出的华氏度采用大写字母 F 或小字字母 f 结尾,温度可以是整数或小数,如:87.65F 指华氏度 87.65 度;
(3) 考虑异常输入的问题,如输入不合法则抛出异常;
(4) 使用input()获得测试用例输入时,不要增加提示字符串。
输入格式
输入一个带单位的温度
输出格式
输入正常,输出转换后的温度,保留小数点后2位小数。
当用户输入值末位不是“C、c、F、f”中的一个时,输出"输入错误,末位只能是’C’,‘c’,‘F’,‘f’"
当检测到NameError错误时输出’试图访问的变量名不存在’
当检测到SyntaxError 错误时输出’存在语法错误’
代码
try:
TempStr = input()
if TempStr[-1] in ['F', 'f']:
C = (eval(TempStr[0:-1]) - 32) / 1.8
print("{:.2f}C".format(C))
elif TempStr[-1] in ['C', 'c']:
F = 1.8 * eval(TempStr[0:-1]) + 32
print("{:.2f}F".format(F))
else:
print("输入错误,末位只能是'C','c','F','f'")
except NameError:
print('试图访问的变量名不存在')
except SyntaxError:
print('存在语法错误')
except Exception as e:
print(e)
百分制成绩转换五分制F
描述
编写一个学生成绩转换程序,用户输入百分制的学生成绩,成绩大于等于 90 且小于等于 100 的输出为“A”,成绩大于或等于 80 且小于 90 的输出为“B”,成绩大于或等于 70 且小于 80 的输出为“C”,成绩大于或等于 60 且小于 70 的输出为“D”,成绩小于 60 且大于等于 0 的输出为“E”,如果输出的成绩大于 100 或小于 0 或输入中包含非数字字符,输出’data error!'。
输入格式
输入一个浮点数,代表百分制成绩。
输出格式
A、B、C、D、E中的一个字母,表示五分制的成绩等级;或输出’data error!'
代码
try:
score = float(input())
degree = 'AABCDEEEEEE'
print('data error!') if (score > 100 or score < 0) else print(degree[10 - int(score) // 10])
except:
print('data error!')
正整数A+B
描述
题的目标很简单,就是求两个正整数A和B的和,其中A和B都大于0。稍微有点麻烦的是,输入并不保证是两个正整数。
输入格式
输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。
注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。
输出格式
如果输入的确是两个正整数,则按格式A + B = 和输出。如果某个输入不合要求,则在相应位置输出?,显然此时和也是?。
代码
ls= input().split()
try:
a = int(ls[0])
if a < 0:
a = '?'
except:
a = '?'
try:
b = int(ls[1])
if b < 0:
b = '?'
except:
b = '?'
if a == '?' or b == '?':
print('{} + {} = {}'.format(a, b, '?'))
else:
print('{} + {} = {}'.format(a,b,a+b))
奇偶求和
描述
输入一个任意字符组成的字符串s,分别统计其中出现的奇数和偶数字符数值之和
如输入‘123456789’
输出 oddsum=25,evensum=20
代码
def f(n): #奇偶函数
if n%2==0:
return 0
return 1
def p(t): #奇数求和
j=0
for i in t:
if f(int(i))==1:
j+=int(i)
return j
def q(t): #偶数求和
j=0
for i in t:
if f(int(i))==0:
j+=int(i)
return j
s=input()
print('oddsum={},evensum={}'.format(p(s),q(s)))
判断数据类型
描述
用户输入一个数据,判断用户输入的是复数(“complex”)、浮点数(“float”)、整数(“int”)还是字符串(“string”),输出括号中与之匹配的数据类型。
输入格式
输入一个数据
输出格式
输出括号中与之匹配的数据类型
s = input()
try:
if s[0:2] in ['0x', '0X', '0o', '0O', '0b', '0B'] and isinstance(eval(s), int):
print("int")
else:
complex(s)
s = eval(s)
if isinstance(s, int):
print("int")
elif isinstance(s, float):
print("float")
else:
print("complex")
except:
print("string")