相关疑难解决方法(0)

Python中递归的基础知识

"编写一个递归函数,"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)

我需要基本的方法来执行此操作,因为不允许使用特殊的内置函数.

python recursion list python-2.7

23
推荐指数
1
解决办法
3万
查看次数

如何将功能应用于自身?

假设我有函数,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或类似功能来实现这一目标?

python

8
推荐指数
2
解决办法
206
查看次数

python - 从内部调用函数

我已经拥有的代码是用于接收数学表达式并计算它的机器人.现在我做它的乘法,除法,减法和加法.但问题是我想在括号内建立对括号和圆括号的支持.为了实现这一点,我需要首先运行我为括号中的表达式而没有括号的表达式编写的代码.我打算检查"("并将其中的表达式附加到列表中,直到它到达a,")"除非它到达另一个,"("在这种情况下我将在列表中创建一个列表.我会减去,乘以和除以我剩下的数字加在一起.

那么可以从内部调用定义/函数吗?

python math recursion expression function

6
推荐指数
2
解决办法
1万
查看次数

如何使用Python获取树的叶节点?

嗨,我是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 …

python oop tree

4
推荐指数
1
解决办法
2万
查看次数

调用python对象时超出了最大递归深度

我的目标是实例化一个名为箭头的类,所以我可以有更多的箭头然后只有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)

python tkinter

2
推荐指数
1
解决办法
6763
查看次数

参数的类型是什么,这个函数有什么作用?

我遇到以下代码的问题:

def myprogram(x):
    if x == []:
        return x
    else:
        return myprogram(x[1:]) + [ x[0] ]
Run Code Online (Sandbox Code Playgroud)

什么是参数类型(x)?这个功能有什么作用?

我应该编写使用参数调用此函数的代码并找到返回值,但如果不了解这里发生了什么,我就不能这样做.任何帮助/反馈将不胜感激.

python

1
推荐指数
1
解决办法
136
查看次数

Python:如何编写一个使用多个参数循环自身的函数?

这个简单的循环工作得很好:

>>> 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 function python-2.7

0
推荐指数
1
解决办法
1835
查看次数

标签 统计

python ×7

function ×2

python-2.7 ×2

recursion ×2

expression ×1

list ×1

math ×1

oop ×1

tkinter ×1

tree ×1