【问题标题】:Python 3 taking multiple data types in input, separated by spacePython 3 在输入中采用多种数据类型,以空格分隔
【发布时间】:2018-04-11 23:24:32
【问题描述】:

所以我需要找到一种方法将多种数据类型作为输入并将它们存储在变量中。假设我有 3 个变量,每个变量都应该存储一个固定的数据类型 a - 浮动 b-str c - 整数

如果用户输入错误,他将被要求再次输入。 用户将输入所有这些,用空格分隔,但我想不出一种方法将它们存储在变量中,同时保持数据类型。我尝试过使用 .split(),但它只是将它们转换为字符串。这可能是很明显的事情,但现在无法弄清楚。提前致谢!

【问题讨论】:

  • 这可能很明显,但现在无法弄清楚。可能是的,你试过什么?
  • 你需要对它们中的每一个进行投射
  • 请在问题中包含您的尝试。 split 不会将它们转换为字符串,所有input 值都是字符串,split() 只是将字符串分割成其他字符串。

标签: python input types


【解决方案1】:

也许:

def myfucn(vars):
    vars = vars.split()
    try:
        float(vars[0])
        if not "." in vars[0]:
            raise Exception("First var should be INT not Float")
    except ValueError:
        print("Error not Float found")

    try:
        int(vars[2])
    except ValueError:
        print("Error Int no found")

    #answer
    a_float, b_str, c_int = vars
    print(" Yes ")

问候

【讨论】:

  • if not "." in vars[0]: 为什么? float(vars[0]) 已经失败了。
  • '因为 float("45") ,返回 45.0 和 45 -> int
  • 公平地说,我记错了区分 float 和 int 的问题,并且在您将异常消息编辑成英文之前无法理解它们。
  • @Edwin Cubillos 也感谢你的快速回答:)
【解决方案2】:

如果使用 split() 函数,您就走在了正确的轨道上。问题是当你说用户将给出三个由''分隔的值时,你正在接受一个字符串。 下面是一个字符串: '34.44 35.45 5' 也许您可以做的是在使用 split 之后,您可以将每个返回的项目转换为一个变量。如果还需要检查变量的类型,可以使用 type() 函数。

希望这会有所帮助!

【讨论】:

  • 我不是反对者,但这有点像电影的预告片。除非 OP 显示他们的代码并且您可以调整这个答案,否则它并不能解释太多。
  • 问题是,我做了以下 - 使用 .split(),然后我将每种类型的变量更改为所需的变量。它可以工作一段时间,但可以说用户输入了一个与所需值不对应的值:如果变量 a 是浮点数,则用户输入例如字符串“w”,我无法将其转换为漂浮。这是主要问题,我无法解决。
  • @zauahiri 在这种情况下你需要使用try/except
猜你喜欢
  • 2017-01-12
  • 2016-12-09
  • 2016-03-12
  • 2021-06-12
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多