python - 如何像计算机科学家一样思考

标签 python python-2.7 nonetype

因此,正如标题所暗示的那样,这是该书中的一个示例。 我对编程还是个新手,调试有困难。话虽如此,欢迎任何批评,特别是如果它显示出更有效的编码方式;请记住,我还是新手,所以如果你给我一个新的内置函数或其他东西,我很可能不知道你指的是什么。

因此,本练习的重点是编写一个函数,为其提供三个参数,以确定这三个参数是否构成一个三角形。这是我的代码:

def is_triangle(a,b,c):
    num_list = [a,b,c]
    biggest = max(num_list)
    other_two = num_list.remove(biggest)
    sum_of_two = sum(other_two)

    if sum_of_two > biggest:
        print 'Congrats, %d, %d, and %d form a triangle!' % (a,b,c)
    elif sum_of_two == biggest:
        print 'That forms a degenerate triangle!'
    else:
        print 'That does\'t make any sort triangle... >:['


def sides():
    side1 = raw_input('Please input side numero Juan: ')
    side2 = raw_input('Now side two: ')
    side3 = raw_input('...aaaannnd three: ')
    import time
    time.sleep(1)
    print 'Thanks >:]'
    side1 = int(side1)
    side2 = int(side2)
    side3 = int(side3)
    is_triangle(side1,side2,side3)

sides()

然而,每当我运行它时,我都会得到以下信息:

Traceback (most recent call last):
  File "A:/Python/is_triangle.py", line 27, in <module>
    sides()
  File "A:/Python/is_triangle.py", line 25, in sides
    is_triangle(side1,side2,side3)
  File "A:/Python/is_triangle.py", line 5, in is_triangle
    sum_of_two = sum(other_two)
TypeError: 'NoneType' object is not iterable

我的猜测是 sum_of_two 行,但我不知道它有什么问题。有人可以帮我调试吗?

我花了一个小时重写它,没有内置函数(以各种方式,到处都是一堆 )。但它看起来很糟糕,我宁愿学习这样写。

最佳答案

问题在于 remove 修改了底层列表 - 它不返回新列表。将其更改为:

num_list.remove(biggest)
sum_of_two = sum(num_list)

要了解发生这种情况的确切原因,请在 IDLE 中尝试以下操作:

>>> x = [1,2,3,4,5]
>>> x.remove(1)
>>> x
[2,3,4,5]

关于python - 如何像计算机科学家一样思考,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16784041/

相关文章:

python-2.x - Python2 - 在 None 类型上使用最小值/最大值

python - 数据库错误 : ORA-01036: illegal variable name/number

python - 在 Python GUI 窗口中加载网页

python - 为什么同一对象在一个实例而不是其他实例中抛出 "NoneType"对象属性错误?

python-2.7 - 有人可以解释我在使用 Python 构建机器学习系统运行文件 blei_lda.py 时遇到的不受支持的操作数错误吗?

python - 使用 slider 编辑颜色值

python - AttributeError: 'NoneType' 对象没有属性 'pencolor'

python - Python 中两个字符串之间的汉明距离

python - 如何从 python 发布到 hipchat

mysql - 如何修复在另一个数据库连接中更新后 mysql select 命令给出错误结果的问题?