"编写一个递归函数,"listSum",它获取整数列表并返回列表中所有整数的总和".
例:
>>>> listSum([1,3,4,5,6])
19
Run Code Online (Sandbox Code Playgroud)
我知道如何以另一种方式做到这一点,但不是以递归的方式.
def listSum(ls):
i = 0
s = 0
while i < len(ls):
s = s + ls[i]
i = i + 1
print s
Run Code Online (Sandbox Code Playgroud)
我需要基本的方法来执行此操作,因为不允许使用特殊的内置函数.
假设我有函数,f它接受一些变量并返回相同类型的变量.为简单起见,我们说
def f(x):
return x/2+1
Run Code Online (Sandbox Code Playgroud)
我有兴趣f一遍又一遍地申请自己.有点像f(f(f(...(f(x))...))).
我可以这样做
s = f(x)
for i in range(100):
s = f(s)
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有一种更简单,更简洁的方式来做同样的事情.我不想避免for循环(就像对自己的挑战).是否有某种使用方法map或类似功能来实现这一目标?
我已经拥有的代码是用于接收数学表达式并计算它的机器人.现在我做它的乘法,除法,减法和加法.但问题是我想在括号内建立对括号和圆括号的支持.为了实现这一点,我需要首先运行我为括号中的表达式而没有括号的表达式编写的代码.我打算检查"("并将其中的表达式附加到列表中,直到它到达a,")"除非它到达另一个,"("在这种情况下我将在列表中创建一个列表.我会减去,乘以和除以我剩下的数字加在一起.
那么可以从内部调用定义/函数吗?
嗨,我是OOP的新手,所以在阅读本文时请记住这一点.
我有一个简单的Python树实现(见下面的代码).
class TreeNode(object):
def __init__(self, data):
self.data = data
self.children = []
def add_child(self, obj):
self.children.append(obj)
class Tree:
def __init__(self):
self.root = TreeNode('ROOT')
def preorder_trav(self, node):
if node is not None:
print node.data
if len(node.children) == 0:
print "("+ node.data + ")"
for n in node.children:
self.preorder_trav(n)
if __name__ == '__main__':
tr = Tree()
n1 = tr.root
n2 = TreeNode("B")
n3 = TreeNode("C")
n4 = TreeNode("D")
n5 = TreeNode("E")
n6 = TreeNode("F")
n1.add_child(n2)
n1.add_child(n3)
n2.add_child(n4)
n2.add_child(n5)
n3.add_child(n6)
tr.preorder_trav(n1)
Run Code Online (Sandbox Code Playgroud)
我现在需要的是实现一个获取Leaf …
我的目标是实例化一个名为箭头的类,所以我可以有更多的箭头然后只有1.我想从坐标200,200开始,并希望每100毫秒增加x 15.但是当我尝试执行此代码时,它会给我以下错误:
File "game.py", line 25, in moveArrow
self.after(100, self.moveArrow(arrow, xCoord+15, yCoord)) #repeat, changing x
File "game.py", line 24, in moveArrow
arrow.place(x = xCoord, y = yCoord) #replace with new x,y
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1860, in place_configure
+ self._options(cnf, kw))
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1055, in _options
elif isinstance(v, (tuple, list)):
RuntimeError: maximum recursion depth exceeded while calling a Python object
Run Code Online (Sandbox Code Playgroud)
"文件"game.py",第25行,在移动箭头self.after(100,self.moveArrow(箭头,xCoord + 15,yCoord))#repeat,更改x"也经常重复.
from Tkinter import *
from random import randint
from PIL import ImageTk, Image
class App(Frame):
def __init__(self, …Run Code Online (Sandbox Code Playgroud) 我遇到以下代码的问题:
def myprogram(x):
if x == []:
return x
else:
return myprogram(x[1:]) + [ x[0] ]
Run Code Online (Sandbox Code Playgroud)
什么是参数类型(x)?这个功能有什么作用?
我应该编写使用参数调用此函数的代码并找到返回值,但如果不了解这里发生了什么,我就不能这样做.任何帮助/反馈将不胜感激.
这个简单的循环工作得很好:
>>> def loop (i):
i+=i
if 0<i<20:
print i
loop(i)
>>> loop (1)
2
4
8
16
Run Code Online (Sandbox Code Playgroud)
但这不起作用,它意外退出循环:
>>> from functools import partial
>>> def loop (i):
i+=i
if 0<i<20:
print i
partial(loop,i)
>>> loop(1)
2
>>>
Run Code Online (Sandbox Code Playgroud)
有什么问题?有没有办法让它以某种方式工作?
这只是一个简单的功能......我真正的问题是:
问:如何编写一个能够循环自身的函数,每次只使用多个参数?我应该看看其他地方(除了部分)吗?
python ×7
function ×2
python-2.7 ×2
recursion ×2
expression ×1
list ×1
math ×1
oop ×1
tkinter ×1
tree ×1