当前位置: 首页 > 面试题库 >

将input()识别为str,float或int并采取相应措施

汪典
2023-03-14
问题内容

Python初学者在这里。我正在编写一个使用无限循环的程序,允许用户输入关键术语来访问不同的“工具”或“模块”。

在这些“模块”之一中,用户可以输入一个值并将其转换为二进制。我想要:

  1. 允许程序识别该值是int还是float,然后运行将值转换为二进制的代码
  2. 允许程序识别输入的值是否为str且str表示“ back”,在该值中将退出当前循环

据我所知,这个问题是在input()将输入的内容自动转换为str时发生的(由于:http : //anh.cs.luc.edu/python/hands-
on/3.1/handsonHtml/io.html
“首先,它将打印您提供的字符串作为参数”)。

如何使下面的代码识别输入是str,float还是int,然后执行相关的if语句?当前,我的代码的这一部分可以接受“后退”以退出循环,但会将任何int或float值用作str,从而使程序提示用户再次输入十进制值。

    #decimal to binary   
    while search == "d2b":
        dec2bin = input("\nDecimal Value: ")
        if type(dec2bin) == int:
            print("Binary Value: " + "{0:b}".format(dec2bin))
        elif type (dec2bin) == str:
            if dec2bin == "back":
                search = 0
        elif type (dec2bin) == float:
                #code for float to binary goes here

编辑:与此线程不同,因为在input()上使用了列表E2:似乎无法使用建议的重复项作为问题的解决方案。但是,Francisco在此主题中的评论提供了解决方案


问题答案:

使用例外!该intfloat功能抛出ValueError时,他们不能将传递的值例外。

while search == "d2b":
    dec2bin = input("\nDecimal Value: ")
    try:
        dec2bin = int(dec2bin)
    except ValueError:
        pass
    else:
        print("Binary Value: " + "{0:b}".format(dec2bin))
        continue

    try:
        dec2bin = float(dec2bin)
    except ValueError:
        pass
    else:
        #code for float to binary goes here
        continue

    if dec2bin == "back":
        search = 0

尝试进行转换的顺序很重要,因为传递给的每个值int都与一起有效float,传递给的每个值float都可以传递给有效str



 类似资料:
  • 每当我执行 以转换为字符串时,pycharm 都会突出显示 str 部分并声明未解析的引用“str” 为什么?我认为str是一个内置的python函数,应该可以普遍工作。 我从Vagrant运行的Python 3.5配置为解释器,按照以下设置:https://www.jetbrains.com/help/pycharm/2016.1/configuring-remote-interpreters-

  • 我想在一个数字输入中显示一个值,比如说100.00。这可以由用户输入,并与货币一起工作,所以它显示是很重要的。 和JSFiddle https://JSFiddle.net/3qnl07yu/

  • 问题内容: 我想将字符串转换为最严格的数据类型:int或float。 我有两个字符串: 如何在Python中确定value1应该为Float,value2应该为Integer? 问题答案:

  • VSCode 对两个类 self.save_data.prop 的类型推断结果: int* | str* 和 int | str 有什么区别,多出来的星号是什么意思?

  • 问题内容: 在Python中,如何将像这样的数字字符串解析为对应的浮点值?或者将字符串解析为整数31? 我只想知道如何将解析为,以及(分别)将解析为。 问题答案:

  • 我想在Swift中将转换为。像这样的基本强制转换不起作用,因为这些类型不是原语,不像Objective-C中的s和s

  • 问题内容: 我想将转换成斯威夫特。像这样的基本转换不起作用,因为这些类型不是基元,这与Objective-C中的s和s 不同 但这会产生以下错误消息: “浮点数”不可转换为“整数” 知道如何将属性从转换为吗? 问题答案: 您可以转换到斯威夫特这样的: 您还可以使用@paulm的注释来实现此结果:

  • 问题内容: 和之间的MySQL FK有什么区别?从文档来看,它们看起来完全一样。是这样吗 如果是这样,为什么两者都有? 问题答案: 从MySQL文档开始:https : //dev.mysql.com/doc/refman/8.0/en/create-table-foreign- keys.html 某些数据库系统具有延迟检查,并且是延迟检查。在MySQL中,外键约束会立即检查,因此与相同。