【问题标题】:Need information on Basic Python Arthematic operation需要有关基本 Python 算术运算的信息
【发布时间】:2019-01-04 08:28:38
【问题描述】:

我正在使用 Python 版本 3.6.4

我试图在 Jupyter Notebook 中编写基本的 Python 代码,但我发现我的代码表现得很有趣。

下面给出的代码按预期工作但是当我将第 4 行代码 print( x, '+', y, '=', x+y) 中的操作更改为 (+) 时,结果是 Error

问题是为什么当操作符发生变化时,乘法工作正常而加法导致错误时会发生这种意外行为?

def fuc(x):
    x = input('Enter the number:')

    for y in range(1,11):
        print( x, 'x', y, '=', x*y)
print(fuc(2))

【问题讨论】:

标签: python python-3.x


【解决方案1】:

用户输入(即x)是字符串。 y 是整数。字符串和整数之间的乘法是有效的 python 操作。整数和字符串之间的加法不是。请注意,我怀疑您的乘法代码按预期工作,即它不会乘以数字,而是重复字符串,例如

>>> '3' * 4
'3333'

要处理你需要将用户输入转换为int的问题:

x = int(input('Enter the number:'))

请注意,这不会处理任何无效输入,例如不是数字输入,会引发异常。

编辑:包括示例代码 sn-p:

def fuc(x):
    x = int(input('Enter the number:'))
    for y in range(1,11):
        print(x, '+', y, '=', x+y)
        # print(f'{x} + {y} = {x+y}') # in 3.6+ you better use this

fuc(2)

python3 中的输出

Enter the number:3
3 + 1 = 4
3 + 2 = 5
3 + 3 = 6
3 + 4 = 7
3 + 5 = 8
3 + 6 = 9
3 + 7 = 10
3 + 8 = 11
3 + 9 = 12
3 + 10 = 13
>>>

通常我会使用字符串格式进行打印,但在这种情况下,我会保留原始代码

【讨论】:

  • 同意您的回答,我尝试了您建议的方式,但没有奏效。但是当我尝试使用 Python2.7 时,它工作正常。
  • 我不知道你尝试了什么,但是它可以工作 - 检查我更新的答案。
  • 刚刚查看了您的other question,您确实将用户输入转换为浮点数并使用字符串格式。你为什么不在这里做同样的事情?
  • 谢谢你们,重启我的 Jupyter notebook 后它就可以工作了
【解决方案2】:

你可以试试这段代码:

def fuc(x):
x = float(input('please enter your desired number'))

for i in range(1,11):#generally i is used as an iterable
    print( "{}*{} '=' ",x*i)
print(fuc())

【讨论】:

  • 欢迎来到 Stack Overflow。不幸的是,在这种情况下,您的缩进是错误的。修复缩进会导致您的代码因 TypeError 而失败。修复该错误会导致它输出,例如{}*{} '=' 12.0。最后,OP 的问题是“为什么会这样?”无法用纯代码回答来回答。请您阅读How to Write a Good Answer 并确保答案既能回答问题又在技术上是正确的。谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
  • 2018-11-26
  • 2019-07-21
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多