Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >函数退出函数后的返回“松散”值

函数退出函数后的返回“松散”值
EN

Stack Overflow用户
提问于 2022-07-02 12:50:34
回答 4查看 77关注 0票数 1

我编写了这段代码来制作温度转换器,并要求自己只使用函数,但我不太明白返回的值是怎么回事。

当我输入错误的值(如"celsiuss“或"klevin”)时,问题就开始了,它通过of语句传递,要求我输入一个有效的单元,并让我按预期的方式进入函数的开头。然后,我写了一个有效的答案,它穿过了valid语句,返回想要的值,但一旦退出函数,返回值就变成'None‘。我用断点对它进行了调试,函数‘(返回) inputUnitSelection’的值为1(在本例中为摄氏),但当它退出时,函数‘(返回) inputUnitSelection’的值为None。我还用指纹检查了一下。为什么它会失去价值呢?因此,我的inputUnit变量没有值,代码的其余部分也无法工作。

让我更加困惑的是,当我第一次输入一个有效的答案时,函数返回一个正确的值,一切都正常。(还使用断点、调试器和打印进行检查)

以下是代码:

代码语言:javascript
运行
AI代码解释
复制
Celsius = 1
Farenheit = 2
Kelvin = 3

def inputUnitSelection():
    unitInput = input(
        "What is the unit of the temperature you wish to convert ? (Celsius, Farenheit, Kelvin) \n")
    
    if(unitInput == "Celsius" or unitInput == "celsius"):
        return Celsius 
    elif(unitInput == "Farenheit" or unitInput == "farenheit"):
        return Farenheit 
    elif(unitInput == "Kelvin" or unitInput == "kelvin"):
        return Kelvin 
    else:
        print("This is not an unit. Please enter a valid unit. \n")
        inputUnitSelection()

inputUnit = inputUnitSelection()
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-07-02 12:57:30

我建议在用户输入合法选项之前,不要递归地调用相同的函数。相反,只在输入选项有效时,才使用循环并将值返回到调用代码。代码示例如下:

代码语言:javascript
运行
AI代码解释
复制
Celsius = 1
Farenheit = 2
Kelvin = 3

def inputUnitSelection():
    while True:
        unitInput = input("What is the unit of the temperature you wish to convert ? (Celsius, Farenheit, Kelvin) \n")

        if(unitInput == "Celsius" or unitInput == "celsius"):
            return Celsius 
        elif(unitInput == "Farenheit" or unitInput == "farenheit"):
            return Farenheit 
        elif(unitInput == "Kelvin" or unitInput == "kelvin"):
            return Kelvin 
        else:
            print("This is not an unit. Please enter a valid unit. \n")

inputUnit = inputUnitSelection()
print(inputUnit)
票数 2
EN

Stack Overflow用户

发布于 2022-07-02 12:58:58

您的代码缩进非常混乱,但表明最后一行不是函数,您只需给函数中的inputUnitSelection()一个返回语句即可。

代码语言:javascript
运行
AI代码解释
复制
else:
    print("This is not an unit. Please enter a valid unit. \n")
    return inputUnitSelection()
票数 2
EN

Stack Overflow用户

发布于 2022-07-02 13:08:48

除了解释问题的答案之外,您还可能希望研究Enum并使用title()编写如下代码:

代码语言:javascript
运行
AI代码解释
复制
from enum import Enum

class ConversionType(Enum):
    Celsius = 1
    Farenheit = 2
    Kelvin = 3


def inputUnitSelection():
    while True:
        unitInput = input("Celsius, Farenheit, Kelvin? \n")
        if(unitInput.title() == ConversionType.Celsius.name):
            return  ConversionType.Celsius.value
        elif(unitInput.title() == ConversionType.Farenheit.name):
            return ConversionType.Farenheit.value 
        elif(unitInput.title() == ConversionType.Kelvin.name):
            return ConversionType.Kelvin.value  
        else:
            print("This is not an unit. Please enter a valid unit. \n")

inputUnit = inputUnitSelection()
print(inputUnit)

阅读

What are enums and why are they useful?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72842343

复制
相关文章
使用此 Microsoft Sentinel 工作簿获得动手 KQL
Kusto 查询语言 (KQL) 是使用 Microsoft Sentinel 的驱动语言。尽管类似于 SQL,但新用户仍必须学习和练习该语言。为了帮助加速学习语言,我们创建了一个交互式学习工作簿。当前版本将帮助新用户或现有用户对语言有 100-200 级的理解,同时还提供实践经验,帮助他们在执行现实世界的查询时迅速上手。
Khan安全团队
2022/01/14
1.8K0
WPF 设置元素为 Collapsed 是否会创建此元素
在 WPF 的 XAML 中,如果将某个元素初始的时候设置 Visibility 为 Collapsed 的值,那么意味着这个元素将不会参与布局,就和不存在是一样的。那么这个元素是否会被创建在内存中?是会创建的
林德熙
2020/11/27
1.1K0
元素弹性布局
table布局在早期是很流行的,因为使用table布局的表格结构清晰,易于理解,表格结构支持行列跨度,可以实现复杂的布局,但是他也有缺点,不利于SEO,复杂的页面代码也非常复杂,难以维护,不支持响应式布局,在移动端上不能很好的适配
云叶知秋
2023/10/16
1340
元素弹性布局
【HTML】HTML5 <div>元素布局的使用
标签可以把文档分割为独立的、不同的部分。它可以用作严格的组织工具,并且不使用任何格式与其关联。
梦溪
2021/08/09
4.1K0
Mybatis的sql映射文件的顶级元素使用实例
Mybatis是是一款优秀的持久层框架(持久化是程序数据在瞬时状态和持久状态间转换的过程。),在dao层大量使用,使sql语句封装在配置文件中,降低程序的耦合度。
jiankang666
2022/05/13
5080
Mybatis的sql映射文件的顶级元素使用实例
js通过class name获得元素
//原理: 用document.getElementsByTagName('*');来获取所有元素,然后取得相同Class的元素。 function getElementsByClassName(n) { var classElements = [], allElements = document.getElementsByTagName('*'); for (var i = 0; i < allElements.length; i++) { if (allElements[
sunsky
2020/08/20
8.9K0
Java 如何从一个 List 中随机获得元素
从一个 List 中随机获得一个元素是有关 List 的一个基本操作,但是这个操作又没有非常明显的实现。
HoneyMoose
2022/05/07
1.8K0
Java 如何从一个 List 中随机获得元素
Java 如何从一个 List 中随机获得元素
从一个 List 中随机获得一个元素是有关 List 的一个基本操作,但是这个操作又没有非常明显的实现。
HoneyMoose
2022/04/29
2K0
Java 如何从一个 List 中随机获得元素
Map映射如何使用迭代器?
迭代器只针对集合类型的数据,因此map类型的必须先转换成集合类型才能使用迭代器去获取元素。
孙晨c
2019/11/21
1.2K0
Mybatis的sql映射文件的顶级元素使用实例(超级详细)
Mybatis是是一款优秀的持久层框架(持久化是程序数据在瞬时状态和持久状态间转换的过程。),在dao层大量使用,使sql语句封装在配置文件中,降低程序的耦合度。
jiankang666
2022/05/12
4130
Mybatis的sql映射文件的顶级元素使用实例(超级详细)
物流巨头顺丰如何布局AI?这是其AI首席科学家的详细解读
随着人工智能的发展,一些物流公司也纷纷尝试利用人工智能技术优化物流环节,提高物流效率。就人工智能将如何改变物流业?物流领域人工的岗位和人工智能之间的关系是什么? 在2018网易经济学家年会“人工智能与人类未来”分论坛上,顺丰人工智能首席科学家刘志欣表示,人工智能技术的发展,实际上是让原有的算法更加高效,而这个算法本身和人工的岗位是共生互补的,它是一个工具,不会取代人的工作。 顺丰AI首席科学家 刘志欣 他认为,物流领域是一个高需求、大流量的方向,这里面本身就会有大量的工作岗位出现。回归人工智能的本质,它
企鹅号小编
2018/02/24
1.3K0
物流巨头顺丰如何布局AI?这是其AI首席科学家的详细解读
seaborn画风和主题风格
本文中的主要知识点: seaborn画风的使用 怎么隐藏刻度线 多个子图怎么使用不同的风格 刻度轴上的数值大小和线条粗细设置 import seaborn as sns # seaborn是对matplotlib的基础上进行了封装 import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt %matplotlib inline ---- 默认画风 def sinplot(flip=1): x = np.l
皮大大
2021/03/02
8810
CSS 布局_3 Position元素定位
我们之前已经介绍过行元素,块元素及行内块元素的属性了,能够知道它们是具有自己默认的显示方式的,即元素会按照文档流 (document flow) 的方式,自上而下,从左到右进行布局,如果你想要改变元素默认的定位行为,就需要设置 position 属性了
Nian糕
2018/08/21
9480
CSS 布局_3 Position元素定位
【CSS布局】Flex布局中元素换行设置间距问题
1. 父元素定高的情况下,直接使用 align-content: space-between;
且陶陶
2023/04/12
5.8K0
【CSS布局】Flex布局中元素换行设置间距问题
Pages 无法使用此AppleID更新
无法更新是因为这个应用并没有绑定到已经登录的AppleID中,点击已购,会提示有应用需要接受,点击全部接受。输入几次密码之后再次更新就ok了、
obaby
2023/02/23
1K0
【CSS 学习笔记】CSS元素和布局
其中 margin 称为外边距,在计算元素整体宽高的时候一般不包括它。CSS3 中新增了一个属性 box-sizing,可以用来指定使用的盒模型计算方式。下面是 CSS3 中支持的盒模型计算方式(CSS2种只支持默认的)
零式的天空
2022/03/22
1.1K0
如何使用Hibernate映射文件将Java类映射到数据库表
上述示例中,<class>元素定义了Employee类和Department类与数据库表的映射关系,<id>元素定义了主键字段的映射,<property>元素定义了普通字段的映射,<many-to-one>元素定义了多对一关系的映射。
堕落飞鸟
2023/05/15
1.2K0
点击加载更多

相似问题

如何获得此布局?

10

如何获得此布局?

40

如何获得此xml android布局

10

使浮动元素在列布局中顺行以满足上面的元素

13

如何在Tkinter中获得此布局?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文