KOM*_*OME 7 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()
Run Code Online (Sandbox Code Playgroud)
然而,每当我运行它时,我得到以下内容:
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
Run Code Online (Sandbox Code Playgroud)
我的猜测是sum_of_two但是我不知道它有什么问题.有人可以帮我调试吗?
我花了一个小时用build_in函数重写它(以各种方式,or到处都是一堆).但它看起来很糟糕,我宁愿学会用这种方式写作.
问题在于remove修改基础列表 - 它不会返回新列表.将其更改为:
num_list.remove(biggest)
sum_of_two = sum(num_list)
Run Code Online (Sandbox Code Playgroud)
要确切了解这种情况发生的原因,请在IDLE中尝试以下操作:
>>> x = [1,2,3,4,5]
>>> x.remove(1)
>>> x
[2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
939 次 |
| 最近记录: |