【问题标题】:How to take input without type conversion in python, so that actual output not override?如何在没有类型转换的情况下在 python 中获取输入,从而不覆盖实际输出?
【发布时间】:2021-02-26 02:49:53
【问题描述】:

对于这个挑战,您需要从标准输入读取一行并检查它是整数、浮点还是字符串类型。 如果输入是- 整数打印 '这个输入是整数类型。'到标准输出 Float print '这个输入是浮点类型的。'到标准输出 String print '这个输入是字符串类型的。'到标准输出 else print '这是别的东西。到标准输出。

例如,如果我的输入:45.6 输出:浮动

所以,我的问题是,我如何能够像在 python 中那样接受输入,我们接受输入它会自动转换为字符串,所以如何避免它。我不知道用户会给出什么数据类型输入,所以任何人都可以帮助我解决如何在 python 中解决这个问题?

【问题讨论】:

  • 所有来自标准输入的输入都将是一个字符序列,即一个字符串。您的任务是分析该字符串以查看它是表示整数还是浮点数。如果两者都不是,那么它就是一个字符串。我不知道如何区分字符串和其他东西 - 如果输入由字母组成,它可能被视为字符串。如果您有其他示例,您应该将它们添加到您的问题中。
  • 你会发现str.isdigit()很有用。

标签: python-3.x


【解决方案1】:

一种方法是检查字符串是否可以转换为浮点数或整数

浮动使用:

def isfloat(value):
  try:

    float(value)
    return True

  except ValueError:

    return False

int 使用:

def isint(value):
  try:
    int(value)
    return True
  except ValueError:
    return False

如果两者都是假的,那么它是字母而不是数字,请注意整数可以转换为浮点数,但反之不行(1转换为浮点数将变为1.0,但1.0不能转换为整数)所以首先你需要检查它是否可以先转换为int,如果值是小数则返回false,然后检查它是否可以转换为float,如果为false则为true字符串

编辑:

def isfloat(value):
  try:

    float(value)
    return True

  except ValueError:

    return False
    
    
def isint(value):
  try:
    int(value)
    return True
  except ValueError:
    return False
    
    
def checkType(value):
    if isint(value):
        print("value is of type int")
    elif isfloat(value):
        print("value is of type float")
    else:
        print("value is of type string")

checkType("1")        
checkType("1.1")        
checkType("test")

【讨论】:

  • 是的,这就是为什么我说先检查它是否是一个整数,然后检查它是否是一个浮点数,如果它返回 false
  • 但是我如何能够组合这些代码以便我能够检查它是哪种数据类型?
猜你喜欢
  • 2011-04-13
  • 1970-01-01
  • 2010-11-27
  • 2017-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-12
相关资源
最近更新 更多