temperatureConversion2
Solution:
#方法一:字符串与列表的相互转换和它们的基本函数操作
n = input()
if n[0] in {"C","c"}:
a= list(n)
a.reverse()
b= a[0:-1] #去掉尾字母,剩下全为数字
b.reverse()
c = "".join(b)
n = eval(c)
F = n*1.8 +32
print("F{:.2f}".format(F))
elif n[0] in {"F","f"}:
a= list(n)
a.reverse()
b= a[0:-1]
b.reverse()
c = "".join(b)
n = eval(c)
C = (n-32)/1.8
print("C{:.2f}".format(C))
else:
print("输入格式错误")
Notes:
(1)str.spilt(sep)作用:将str进行分隔。若str中含有符号sep,则有sep处进行分隔,sep被割掉,左右分开。如单个字符"F21.23",则"F21.23".split(".")得结果为['F21','23']。而"F21.23".split(",")为['F21.23']。因为sep为逗号。在str中没有。所以整体返回而没有被分隔。除单个字符外,一个字符串(一句话)也一样。不管哪个,结果都是返回一个列表。列表中的元素是str类型,即有引号
(2)行4,不能用 a = n.split(),因为虽然可以将单一字符转为列表,但因为列表元素只有一个,即这个字符整体,如"F21.23",变成[ 'F21.23' ]而反转是对列表中的各元素进行反转,而只有一个元素,反转还是它,所以下面的反转起不到作用
(3)a = list(n) 为强制转换,得到以这个单一字符的内部每个元素作为列表元素,如:"F21.23",变成['F','2','1','.','2','3'],但强制是临时的,所以必须赋值给一个变量
(4)行5列表才有revese()反转函数,且不是reversed(),后面没有d,且不需要赋值,就算赋值给b,b也是空的。字符串没有反转函数
#方法二:自定义函数方法
def getInputs():
n = input()
return n
def abc(n):
a = list(n)
a.reverse()
b = a[0:-1]
b.reverse()
c = "".join(b)
h =eval(c)
return h
def a(h):
F = h*1.8 +32
print("F{:.2f}".format(F)) def main():
n = getInputs()
if n[0] in {"C","c"}:
k = abc(n)
F = k*1.8 +32
print("F{:.2f}".format(F))
elif n[0] in {"F","f"}:
k = abc(n)
C = (k-32)/1.8
print("C{:.2f}".format(C))
else:
print("输入格式错误")
main()
自顶向下:
先执行def main()结构,即主函数。在main()中,由上往下执行语句。执行到哪个函数,就调用哪个函数。先执行getInput()函数,则回到开头调用该函数,要注意每个函数执行完后,一定要返回结果,即必须有return语句,至于返回什么,看自己需要,不一定是函数名括号内的变量,跟此无关。比如getInput()的括号就没设定任何参数,却返回了n。执行完该函数,如果需要用到返回的n,则要将它赋值给一个变量,因为局部变量n只能在函数内用,执行完就没有了,或者是不能跨函数用,不然就要用全局变量global。即在函数外定义n,然后哪个函数要用n,就在哪个函数内部用global n。但全局变量有个缺点:由于一个子函数的结果,不能被另一个字函数或主函数调用(因为子函数的返回值,即产生的结果是局部变量),所以假如函数A使用全局变量n产生了结果h,另一个函数想要用这个局部变量h时,需要用global h。即事先要在函数外定义一个h,但是都还没运行函数A,怎么事先知道h并定义?事先定义了,那运行函数A得到的h又有什么意义?而且运行完,函数B用到的h是事先定义的哪个h,并不是函数A产生的h(因为函数A产生的h是局部变量),所以不管有没有定义global h,都无法用到函数A产生的h,即子函数之间的结果不能被相互调用。
解决方法:
在主函数中,将每个子函数的结果赋值给一个变量,且这个变量作为下一个函数的参数(非可选参数,即不能缺少的参数),以此实现子函数的结果之间的调用,此便形成了所谓的“信息流”。例如:主函数中,getInput()运行完后,将结果(即返回值n)赋值给新的n(也可用其它符号,用什么符号不重要)。接着往下进行执行语句。假如条件为真,则主函数便将得到的新的参数n传递给abc函数,即abc(n),于是就去调用函数abc(n),用完便将结果赋给k,然后再往下执行语句,以此类推。
Conclusions:
(1)自定义函数执行的顺序:依据主函数main()里面的语句的上下顺序,由上往下执行。主函数上面的各个自定义的子函数的位置先后不影响,但为了规范,子函数之间的顺序应按照主函数里面的先后顺序。
(2)每个子函数都必须返回值(return语句不能缺少),返回什么值看需要
(3)主函数里面可以有判断、循环语句,其实跟普通的写程序一样,不一定都要对这些判断、循环再自定义为子函数
(4)子函数括号内的参数,看是否需要定义。在主函数中,子函数如果需要进行结果传递,则必须要定义参数。一般除了第一个输入的子函数,其余的子函数都需要
Statement:此为本人所学见解,不一定正确。如有不足之处,欢迎指正。分享随笔,一起进步
temperatureConversion2的更多相关文章
随机推荐
- k8s学习 - 概念 - Pod
k8s学习 - 概念 - Pod 这篇继续看概念,主要是 Pod 这个概念,这个概念非常重要,是 k8s 集群的最小单位. 怎么才算是理解好 pod 了呢,基本上把 pod 的所有 describe ...
- ServiceFabric极简文档-4.0 开发环境搭建
1. VS2017安装包启动页,安装Azure.(安装的VS的Tool)2. 下载Service Fabric Web PI,安装Service Fabric(自动安装SDK与Runtime)
- 微信小程序开发--组件(5)
一.editor 富文本编辑器,可以对图片.文字进行编辑. 编辑器导出内容支持带标签的 html和纯文本的 text,编辑器内部采用 delta 格式进行存储. 通过setContents接口设置内容 ...
- 【不带权图算法之拓扑排序】-C++
拓扑排序算法主要由以下两步循环执行,直到不存在入度为 的顶点为止. 选择一个入度为 的顶点并将它输出: 删除从该顶点连出的所有边. 循环结束,若输出的顶点数小于图中的顶点数,则表示该图中存在回路,也就 ...
- C#3.0新增功能10 表达式树 02 说明
连载目录 [已更新最新开发文章,点击查看详细] 表达式树是定义代码的数据结构. 它们基于编译器用于分析代码和生成已编译输出的相同结构.表达式树和 Roslyn API 中用于生成分析器和 Cod ...
- restapi(2)- generic restful CRUD:通用的restful风格数据库表维护工具
研究关于restapi的初衷是想搞一套通用的平台数据表维护http工具.前面谈过身份验证和使用权限.文件的上传下载,这次来到具体的数据库表维护.我们在这篇示范里设计一套通用的对平台每一个数据表的标准维 ...
- 二、SQL Server 2008附加数据库时出错的解决方法
错误中提示“数据库的版本为661,无法打开.此服务器支持655版及更低版本.不支持降级路径”. 这种情况是由于高版本的数据库文件在低版本的数据库上造成的,即我们要附加的数据库文件的版本高于当前SQL ...
- [ PyQt入门教程 ] Qt Designer工具的布局管理
这节课很重要..界面整洁美观与否就看布局了..这里讲布局方法,至于设计的天赋与最终界面的美感那就看造化了.. 本文主要讲述Qt Designer工具实现界面控件布局管理,就是排列组合控件.包括水平布局 ...
- <表格>
一.列表 信息资源的一种展示形式 二.列表的分类 1.有序列表 <ol> <li>列表项1</li> <li>列表项2</li> </ ...
- 林大妈的JavaScript基础知识(三):JavaScript编程(2)函数
JavaScript是一门函数式的面向对象编程语言.了解函数将会是了解对象创建和操作.原型及原型方法.模块化编程等的重要基础.函数包含一组语句,它的主要功能是代码复用.隐藏信息和组合调用.我们编程就是 ...
k8s学习 - 概念 - Pod 这篇继续看概念,主要是 Pod 这个概念,这个概念非常重要,是 k8s 集群的最小单位. 怎么才算是理解好 pod 了呢,基本上把 pod 的所有 describe ...
1. VS2017安装包启动页,安装Azure.(安装的VS的Tool)2. 下载Service Fabric Web PI,安装Service Fabric(自动安装SDK与Runtime)
一.editor 富文本编辑器,可以对图片.文字进行编辑. 编辑器导出内容支持带标签的 html和纯文本的 text,编辑器内部采用 delta 格式进行存储. 通过setContents接口设置内容 ...
拓扑排序算法主要由以下两步循环执行,直到不存在入度为 的顶点为止. 选择一个入度为 的顶点并将它输出: 删除从该顶点连出的所有边. 循环结束,若输出的顶点数小于图中的顶点数,则表示该图中存在回路,也就 ...
连载目录 [已更新最新开发文章,点击查看详细] 表达式树是定义代码的数据结构. 它们基于编译器用于分析代码和生成已编译输出的相同结构.表达式树和 Roslyn API 中用于生成分析器和 Cod ...
研究关于restapi的初衷是想搞一套通用的平台数据表维护http工具.前面谈过身份验证和使用权限.文件的上传下载,这次来到具体的数据库表维护.我们在这篇示范里设计一套通用的对平台每一个数据表的标准维 ...
错误中提示“数据库的版本为661,无法打开.此服务器支持655版及更低版本.不支持降级路径”. 这种情况是由于高版本的数据库文件在低版本的数据库上造成的,即我们要附加的数据库文件的版本高于当前SQL ...
这节课很重要..界面整洁美观与否就看布局了..这里讲布局方法,至于设计的天赋与最终界面的美感那就看造化了.. 本文主要讲述Qt Designer工具实现界面控件布局管理,就是排列组合控件.包括水平布局 ...
一.列表 信息资源的一种展示形式 二.列表的分类 1.有序列表 <ol> <li>列表项1</li> <li>列表项2</li> </ ...
JavaScript是一门函数式的面向对象编程语言.了解函数将会是了解对象创建和操作.原型及原型方法.模块化编程等的重要基础.函数包含一组语句,它的主要功能是代码复用.隐藏信息和组合调用.我们编程就是 ...