(原题:https://www.python123.io/student/courses/934/groups/8102/problems/programmings/6078)

Solution:

#方法一:异常处理与if单分支结合
n = input()
try:
if ("C" in n) or ("c" in n):
n = n.strip("Cc") #将字符串n的首尾的C与c全部去掉,实际上只需去掉末尾,但不影响
F = eval(n)*1.8 +32
print("{:.2f}".format(F)+"F") #或print("{:.2f}F".format(F))
else:
n = n.strip("Ff")
C = (eval(n)-32)/1.8
print("{:.2f}".format(C)+"C")
except:
print("输入格式错误")
#方法二:if-elif-else多分支与字符串切片(截取片断)结合
n = input()
if n[-1] in {"C","c"}:
n= n[0:-1]
F = eval(n)*1.8 +32
print("{:.2f}F".format(F))
elif n[-1] in {"F","f"}:
n = n[0:-1]
C = (eval(n)-32)/1.8
print("{:.2f}C".format(C))
else:
print("输入格式错误")

Notes:

(1)else在二分支、多分支中,为了把各中情况都考虑周全,有良好的用户体验,最好写上,否则虽然不满足前面那些条件,程序也不会报错,但也没有任何提示。执行时看起来像是程序没反应一样

(2)方法二中,因为else已经对用户不符合要求的输入进行了处理,所以不需再用try-except。因为这个只有在程序出现错误的时候才会执行except中的语句,报出相应的错误。如果程序不出错,即便不满足要求,也不会执行,画蛇添足。如:

执行结果:

即所有不正确的输入,都执行else语句,而不是except语句。

由此,可不可以去掉else,用except来替代呢?答案是否定的。如下:

n = input()
try:
if n[-1] in {"C","c"}:
n= n[0:-1]
F = eval(n)*1.8 +32
print("{:.2f}F".format(F))
elif n[-1] in {"F","f"}:
n = n[0:-1]
C = (eval(n)-32)/1.8
print("{:.2f}C".format(C))
except:
print("输入格式错误")

执行结果:

不报错:因为不管输入什么,程序都不会执行不了,所以异常处理时多余的

不提示:因为缺少了else对不满足条件的处理,所以不会返回任何结果

Statement:此为本人所学见解,不一定正确。如有不足之处,欢迎指正。分享随笔,一起进步

temperatureConversion1的更多相关文章

随机推荐

  1. Atom常用插件、快键键、使用技巧

    atom 中间有一条白色的虚线,怎么去掉? Settings/Packages/wrap-guide disable 自动换行 File-Settings-Editor-Soft Wrap(打勾即可) ...

  2. C#使用sqlite-net搭建简易的ORM

    SQLite简易版ORM 首先打开项目,使用nuget搜索sqlite-net,如下图: 下载完成后,我们会多出两个文件,SQLite.cs和SQLiteAsync.cs. 我们新建一个文件夹SQLi ...

  3. Java 7 源码学习系列(一)——String

    String表示字符串,Java中所有字符串的字面值都是String类的实例,例如“ABC”.字符串是常量,在定义之后不能被改变,字符串缓冲区支持可变的字符串.因为 String 对象是不可变的,所以 ...

  4. shell_链接命令ln与nohup命令使用方法

    ln命令是一个链接命令,工作中用的比较多的就是对一个文件或者是目录建立起软连接.软连接的概念类似于windows下的快捷方式.比如,在win下,我们经常在安装完word.ppt等office程序后,在 ...

  5. Java面试题汇总---整理版(附答案)

    今天继续为大家整理Java面试题,并涉及数据库和网络等相关知识,希望能帮助到各位开发者. 1,为什么要用spring,Spring主要使用了什么模式? spring能够很好的和各大框架整合,它通过IO ...

  6. 深入学习SpringMVC

    1.什么是SpringMVC? SpringMVC是Spring框架内置的MVC的实现.SpringMVC就是一个Spring内置的MVC框架.MVC框架,它解决WEB开发中常见的问题(参数接收.文件 ...

  7. Excel催化剂开源第20波-条件格式版聚光灯功能,行列标示方便阅读

    Excel聚光灯功能,辅助数据查看,选择区域下的高亮显示所在行列位置,此功能已被广大Excel开发者研究得十分透彻,各种版本的聚光灯流转在网络里,同样地也是一大堆的VBA代码,难找.Net的现成代码, ...

  8. springboot4自动配置的原理(浅层)

    自动配置的原理(浅层) @Configuration //这是一个配置类 @EnableConfigurationProperties(HttpProperties.class)//启用Configu ...

  9. HDFS读写数据流程

    HDFS的组成 1.NameNode:存储文件的元数据,如文件名,文件目录结构,文件属性(创建时间,文件权限,文件大小) 以及每个文件的块列表和块所在的DataNode等.类似于一本书的目录功能. 2 ...

  10. python注释-输入输出-基本数据类型-运算符

    python注释 用处:注释用来书写一些解释性信息,对代码的逻辑作用等作出描述 单行注释.多行注释 # 这是行注释,注释内容与# 之间要空一格 print("hello world!&quo ...