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. signed char类型取值范围计算

    在C语言程序中,给定一个类型,如何计算这个类型变量的取值范围呢?比如有一个字符型变量定义如下: signed char c: 这个字符变量c的取值范围是[-128,127],是计算出来的呢? 假设字符 ...

  2. sql server编写通用脚本实现获取一年前日期的方法

    问题: 在数据库编程开发中,有时需要获取一年前的日期,以便以此为时间的分界点,查询其前后对应的数据量.例如:1. 想查询截止到一年前当天0点之前的数据量,以及一年前当天0点开始到现在的数据量.2. 想 ...

  3. Java编程思想:File类getCanonicalFile()方法,listFile()方法

    import java.io.IOException; import java.util.*; import java.util.regex.Pattern; import java.io.File; ...

  4. 基于百度EasyDL定制化图像识别平台的海洋鱼类识别方法

    [目的]鱼类识别对渔业资源的开发利用有着重要的意义.针对海底环境恶劣.拍摄环境亮度低.场景模糊的实际情况导致海底观测视频品质差,视频中的鱼类识别难的问题以及现有鱼类识别方法存在的鱼类标注数据集过少导致 ...

  5. 题解 AT2243 【正方形のチップ】

    题意:在格子纸上: 给出格子的单位长度C,和在上面圆的半径R; 求出: 圆中有多少个完整的小正方形.(单位长度*单位长度) #include<cstdio> #include<cma ...

  6. Spring_IoC注解开发和AOP的XML开发(学习笔记2)

    一:IoC注解开发 1,在applicationContext.xml中需要引入context约束 <beans xmlns="http://www.springframework.o ...

  7. SpringMvc返回JSON出现"$.result.currentLevel"

    "$.result.currentLevel" 问题描述 使用SpringMvc返回一个json数据的时候,会在产生的结果中出现如下的问题:"$.result.curre ...

  8. 【小程序】小程序中设置 tabBar

    小程序中 tabBar 的设置,tabBar 就是底部导航栏,在app.json中配置. list 为数组至少两项.tab栏的 position 为 top 时间,不显示图标. "tabBa ...

  9. XTTS系列之一:U2L迁移解决方案之XTTS的使用

    本系列的定位是对XTTS及相关技术进行深入的学习研究.作为本系列的开篇,本着实用性的原则,我先把一次实际生产环境U2L的迁移实战实施方案进行提炼简化,旨在能清楚说明该如何使用XTTS这种解决方案来进行 ...

  10. FD limit (65535) too low for maxconn=65535/maxsock=131084.Please raise 'ulimit-n' to 131084 or more to avoid any trouble.

    在安装完Haproxy启动时报错,诸如:FD limit (65535) too low for maxconn=65535/maxsock=131084.Please raise 'ulimit-n ...