【问题标题】:python variable memory size - errorpython可变内存大小 - 错误
【发布时间】:2017-11-17 09:31:03
【问题描述】:

我是 python 编程新手:我正在尝试解决这个问题:http://codeforces.com/contest/791/problem/A - 但是,当我试图在我的编辑器中解决它时,它给了我:语句中的问题: “x *= 3”,解释器错误是: 第 6 行,主要 x *= 3 内存错误

def main():
    x = input("inter first number : ")
    z = input("inter second number : ")
    result = 0
    while x <= z:
        x *= 3
        z *= 2
        result += 1
    print(result)

if __name__ == '__main__':
    main()

【问题讨论】:

  • xy 是字符串,字符串上的乘法是 '10'*3 == '101010',您可能会创建一个无限循环,创建越来越大的字符串,直到内存不足。

标签: python python-3.x variables memory


【解决方案1】:

input 类型为 str:您必须先将输入转换为数值,intfloat,然后才能对其应用数值运算 (*=)::

def main():
    x = int(input("inter first number : "))  # alternatively: float(input("inter first number : "))
    z = int(input("inter second number : ")) # same alternative
    result = 0
    while x <= z:
        x *= 3
        z *= 2
        result += 1
    print(result)

if __name__ == '__main__':
    main()

正如@juanpa.arrivillaga 在 cmets 中指出的那样,原因 MemoryErrorxy 是字符串,乘法 字符串确实'10'*3 == '101010' 你可能会创建一个无限 循环,创建越来越大的字符串,直到内存不足。

【讨论】:

  • 酷,很高兴我能帮上忙。请看这里:stackoverflow.com/help/someone-answers
  • @ReblochonMasque ,附加问题。在哪里运行上面的代码,以便有必要转换输入?因为当我在笔记本上运行它时,它并没有引发错误。当我插入type(x) 时,输出为int。谢谢!
  • 不确定你做了什么,但input 的类型始终是str(在 jupyter notebook 中也是如此)
猜你喜欢
  • 2015-12-18
  • 1970-01-01
  • 2013-01-25
  • 2020-01-31
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多