【问题标题】:How do I subtract two integers without knowing their values?如何在不知道它们的值的情况下减去两个整数?
【发布时间】:2018-03-28 23:07:38
【问题描述】:

所以我正在做这个 Python 练习,方向是:定义一个函数调用减数(x,y),它接受两个数字并返回两个数字的差。

例子

>>> subtractNumber(20, 7)
13
>>> subtractNumber(-20, -4)
-16
>>> subtractNumber(-2, -2)
0

我的代码

def subtractNumber(x, y): 
    subtraction = int(x) - int(y)
    return subtraction
subtractNumber('x','y')

我得到错误:

Traceback (most recent call last):
  File "D:\Python Exercises\Temp_Learning\Python Practice9.py", line 4, in <module>
    subtractNumber('x','y')
  File "D:\Python Exercises\Temp_Learning\Python Practice9.py", line 2, in subtractNumber
    subtraction = int(x) - int(y)
ValueError: invalid literal for int() with base 10: 'x'

我仍然不明白我哪里出错了。有人能帮助我吗?谢谢。

【问题讨论】:

  • 您要求 python 将字符串 x 转换为整数。你对那里有什么期望?
  • ...您的函数应该减去数字或字符串吗?为什么要给它字符串作为输入?整个“在不知道其值的情况下减去数字”是什么?你怎么能不知道一个数字的价值呢?您是否正在尝试进行符号数学,例如 sympy?

标签: python python-3.x


【解决方案1】:

'x''y' 不是数字,而是字符串。你会假设字符 x 和字符 y 是多少?

如果要使用之前分配的变量,只需传递xy

subtractNumber(x, y)

如果您想在两个字母后面使用 ascii 字符代码,请使用:

subtractNumber(ord('x'), ord('y'))

【讨论】:

    【解决方案2】:

    在您的示例中,'x''y' 是不代表数字的字符串,因此无法使用 int() 进行转换。

    所以你不能这样做:

    subtractNumber('x', 'y')
    

    但是,这些会起作用:

    >>> subtractNumber(13, 7) # Regular integers
    13
    >>> subtractNumber('13', '7') # Strings that contain digits can be converted to int
    13
    >>> x = 13
    >>> y = 7
    >>> subtractNumber(x, y) # Here, x and y are variables, not strings
    13
    

    【讨论】:

      【解决方案3】:

      int 是用来将某物转换为整数的东西。

      x = '5'
      y = int(x)
      

      将导致 y 具有值 5

      int(x)x=5 返回5。但是,您将字符 'x' 发送到 intint 不知道如何将其转换为整数。

      这应该适合你

      In [3]: def subtractNumber(x, y):
         ...:     return (int(x) - int(y))
         ...:
      
      In [4]: subtractNumber(5, -6)
      Out[4]: 11
      
      In [5]: subtractNumber(5, 6)
      Out[5]: -1
      
      In [6]: subtractNumber(-5, 6)
      Out[6]: -11
      
      In [7]: subtractNumber(-5, -6)
      Out[7]: 1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-27
        • 2019-05-02
        • 1970-01-01
        • 1970-01-01
        • 2015-08-30
        相关资源
        最近更新 更多