【问题标题】:Python 2.7 taking input from user for two separate variablesPython 2.7 从用户那里获取两个独立变量的输入
【发布时间】:2017-09-26 22:37:40
【问题描述】:
getMin, getMax = int(input("Enter a range (min,max): "));

上面是我正在尝试实现的代码,但它给了我一个错误提示...

int() argument must be a string or a number, not 'tuple'

基本上,我尝试在输入语句之后输入.split(,),但我得到了同样的错误。当用户输入 1,10 作为输入时,我想要 getMin = 1getMax = 10

【问题讨论】:

标签: python python-2.7 input


【解决方案1】:

由于您使用的是 Python 2,因此您应该使用 raw_input 而不是 input。试试这样的:

from ast import literal_eval

prompt = "Enter a range (min,max): "
getMin = getMax = None

while {type(getMin), type(getMax)} != {int}:
    try:
        getMin, getMax = literal_eval(raw_input(prompt))
    except (ValueError, TypeError, SyntaxError):
        pass  # ask again...

【讨论】:

    【解决方案2】:

    恕我直言,假设您希望输入以逗号分隔,则方法更简洁

    >>> prompt = "Enter a range (min,max): "
    >>> while True:
    ...     try:
    ...             getMin, getMax = map(int, raw_input(prompt).split(','))
    ...             break
    ...     except (ValueError, TypeError):
    ...             pass
    ... 
    Enter a range (min,max): skfj slfjd
    Enter a range (min,max): 232,23123,213
    Enter a range (min,max): 12, 432
    >>> getMin
    12
    >>> getMax
    432
    

    【讨论】:

      【解决方案3】:

      input 函数(请参阅doc here)将尝试评估提供的输入。例如,如果你用你的名字 AMcCauley13 喂它,它会寻找一个名为 so 的变量。 用1,10 之类的值输入它会在一个元组(1,10) 中求值,这将破坏需要一个字符串的int() 函数。

      尝试更简单的

      getMin = int(raw_input("min range: "))
      getMax = int(raw_input("max range: "))
      

      或将splitmap 组合为balki suggested in the meanwhile

      【讨论】:

      • 谢谢!我最初是这样做的,但不知道我的教授是否会接受这样做。
      • 干脆不使用input怎么样,这样就不用处理__import__('os').system('cat /etc/passwd')之类的字符串了。
      • 这是一个很好的观点。修复它以避免误导可能将其用于任务以外的其他人。
      猜你喜欢
      • 1970-01-01
      • 2011-11-14
      • 2019-06-19
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      相关资源
      最近更新 更多