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的更多相关文章

随机推荐

  1. 奇袭(单调栈+分治+桶排)(20190716 NOIP模拟测试4)

    C. 奇袭 题目类型:传统 评测方式:文本比较 内存限制:256 MiB 时间限制:1000 ms 标准输入输出   题目描述 由于各种原因,桐人现在被困在Under World(以下简称UW)中,而 ...

  2. Bzoj 2525 [Poi2011]Dynamite

    2525: [Poi2011]Dynamite Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 240  Solved: 120[Submit][Sta ...

  3. 完全平方数(C语言实现)

    一.题目 一个整数,它加上100后是一个完全平方数请问该数是多少? 二.程序分析 1.题目中没有限定这个整数的范围,因此,可以在代码中#define scope 10000,即使用scope变量定义一 ...

  4. [原创]Rsync搭建和使用

    rsync服务的搭建和使用 ***下载安装: #wget https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz #tar -zxvf ...

  5. 架构师小跟班:SSL证书免费申请及部署,解决页面样式错乱问题完整攻略

    申请证书 1.登录阿里云控制台,产品与服务,选择SSL证书 2.进入SSL证书页面,点击“购买证书”,选择免费1年的证书类型,点击“立即购买” 3.返回SSL证书页面,可以看到证书列表里多了一条记录 ...

  6. backtracing

    5月10日 1 37  Sudoku Slover public void solveSudoku(char[][] board) { if(board == null || board.length ...

  7. Charles(Windows/Android)入门使用

    一. 介绍以及下载(windows) Charles是一个HTTP代理/HTTP监视器/反向代理,使开发人员能够查看其机器和Internet之间所有HTTP和SSL/HTTPS流量,这包括请求,响应和 ...

  8. 原创:微信小程序如何使用自定义组件

    本博文是通过实际开发中的一个实例来讲解自定义组件的使用. 第一步:新建自定义组件目录,如图,我新建了个componts和tabList目录,然后右键tabList目录选择新建compont取名为tab ...

  9. mysql中left join right join inner join用法分析

    mysql数据库中的关联查询,基本都会用到left join,right join,inner join等查询方式,今天来说说这三种用法的区别 1.创建表test1,test2,插入测试数据 #创建表 ...

  10. Axis1.4 配置数组类型复杂对象

    最近 项目对接 webservice,要求SOAP 标准是1.1,然后在axis 和 spring ws 和 cxf 之间进行选择,然后axis 可以自定义服务,然后随tomcat启动发布,sprin ...