【发布时间】:2017-07-10 10:16:48
【问题描述】:
我正在尝试使用 cmd 模块在 Python 中编写自己的 shell,即使在互联网上阅读了数百个主题后,我也不知道如何解决我的问题。
def do_triangle_area(a, h):
"Calculating tiangle's field"
print (1/2*a)*h
我只想通过启动程序和键入时通过命令行传递“a”和“h”参数
$ tiangle_area 5 2
它应该返回结果,但是有一个错误:
Traceback (most recent call last):
File "test8.py", line 75, in <module>
CMD().cmdloop()
File "/usr/lib/python2.7/cmd.py", line 142, in cmdloop
stop = self.onecmd(line)
File "/usr/lib/python2.7/cmd.py", line 221, in onecmd
return func(arg)
File "test8.py", line 17, in do_triangle_area
print (a*b)
TypeError: object cannot be interpreted as an index
我试图添加一个 self 参数
def do_triangle_area(self, a, h):
"Calculating tiangle's field"
print (1/2*a)*h
但它也不起作用:
Traceback (most recent call last):
File "test8.py", line 75, in <module>
CMD().cmdloop()
File "/usr/lib/python2.7/cmd.py", line 142, in cmdloop
stop = self.onecmd(line)
File "/usr/lib/python2.7/cmd.py", line 221, in onecmd
return func(arg)
TypeError: do_triangle_area() takes exactly 3 arguments (2 given)
一切都在一个类中,导入的 cmd 模块。当它是一个论点时一切都好 - 检查,工作出色,但它无法为我计算任何东西。但为什么它不能处理来自用户的超过 1 个参数?效果如何?
在这种情况下我该怎么办?请给我任何提示,因为我正在把头撞到墙上......
编辑:完整代码http://pastebin.com/3EVBbvfN EDIT2:粘贴过期 - 新粘贴:http://pastebin.com/3wM021s1
【问题讨论】:
-
包含
def onecmd的代码或您解析该行的位置 -
[pastebin.com/3EVBbvfN]我不知道你在问什么,所以我包括了整个代码
-
拜托,谁能帮帮我?
-
您的 pastebin 不是有效的 python:
do_triangle_area接受a&b并使用a&h。 -
不不不,这不是问题所在。这是一个快速粘贴,但这不是重点。我的观点是如何使用 cmd 模块传递两个参数?例如。计算三角形面积还是简单地将两个整数相加?
标签: python python-2.7 methods