Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python作业-没有意义_Python_List_Integer - Fatal编程技术网

Python作业-没有意义

Python作业-没有意义,python,list,integer,Python,List,Integer,好的,我们的教授解释了(有点)这个问题,但它仍然没有多大意义 问题:实现函数knice(f,a,b,k),如果某个整数a是的,我可以理解为什么这可能会令人困惑 f(f(f(…(f(x)))=x是否包含在三个双引号中?这是一个函数文档字符串,有点像注释代码。如果没有保护它,它不应该是独立的 假设f被一个一个地称为增量 在x=2的情况下,用10倍于1的方式调用增量会得到12。无论你增加多少次,你似乎永远都不会得到2 现在想象f被称为乘1 在x为3的情况下,这样调用5次乘1会得到3.Sweet 因此,

好的,我们的教授解释了(有点)这个问题,但它仍然没有多大意义


问题:实现函数
knice(f,a,b,k)
,如果某个整数
a是的,我可以理解为什么这可能会令人困惑

f(f(f(…(f(x)))=x是否包含在三个双引号中?这是一个函数文档字符串,有点像注释代码。如果没有保护它,它不应该是独立的

假设f被一个一个地称为增量

在x=2的情况下,用10倍于1的方式调用增量会得到12。无论你增加多少次,你似乎永远都不会得到2

现在想象f被称为乘1

在x为3的情况下,这样调用5次乘1会得到3.Sweet

因此,您可以测试一些示例输出(您必须编写函数)

knice(按1,1,3,5递增)
将返回0

knice(乘以1,1,3,5)
将返回1


另一个提示是,缩进在python中很重要。

忽略他的代码;您应该编写任何您觉得合适的代码,并在以后解决这些问题

你想知道

  • f(a)=a
    ,或
    f(a))=a
    ,或…,或
    f^n(a)=a
  • f(a+1)=a+1
    ,或
    f(f(a+1))=a+1
    ,或…,或
    f^n(a+1)=a+1
  • f(b)=b
    ,或
    f(f(b))=b
    ,或…,或
    f^n(b)=b

一个明显的算法应该立即浮现在脑海中:一个接一个地尝试所有这些值!您将需要两个(嵌套的)循环,因为您正在迭代一个矩形的值。您现在可以看到该做什么了吗?

这是一个具体的示例。从小处开始,假设您调用了
knice(f,a=1,b=2,k=1)对于<代码> k==1 < /代码>,我们不必担心迭代函数。考虑代码< >代码> x /代码>的唯一值是1和2,所以<代码> KNICE < /C>可以返回1(即true),如果<代码> f(1)=1</CODE >或<代码> f(2)=2</COD> < < /P>
现在假设您调用了
knice(f,a=1,b=2,k=2)
,您还必须检查
f(f(1))
f(f(2))


k
变大时,您必须调用
f
更多。当
a
b
之间的范围变大时,您必须尝试更多的
x
值作为
f
的参数。我认为缩进有点过了,
循环的第二个
值应该在第一个循环内。还有,什么是
z
?最后,这个函数根本没有
return
。这个例子只是一个起点,还是打算作为一个工作函数?这就是问题所在。教授没有具体说明任何一个例子的含义,他向一个40人的班级解释了这一点,因为没有人知道该怎么做。我真的不知道我是否知道我是在做T是Z或2,那么,考虑它是一个非工作的起点。如果有一些重排和轻微的调整,你可以使这个函数起作用。@ SeyYuu10:显然,如果你不能理解它,那么教授是错误的,更不用说让它按原样工作了。我确实认为<代码> z <代码>应该是<代码> 2代码>。“这是我想让你做的一些伪代码”。你真的澄清了这一点。教授的代码几乎毫无意义。@Droogans:它应该(在结构上)接近最终答案。语法实际上不是python,“变量”“代码中有占位符供您填写,等等。不过,如果您确实找到了答案,您可能会发现教授代码中的相似之处多于差异(这就是格雷格的第二条评论)。诀窍是首先理解函数的复杂目标。如果你已经掌握了这个问题,祝你好运。很抱歉要强调这个问题,但看到另一位教授以这种方式对待新生,我想知道他们是否会得到奖金,而不是让他们在CS课程中不及格。如果我在听讲座,我可能会有不同的想法关于这里发布的“示例”的意见。
:)
我将强调魔鬼/教授的主张立场:我不认为教授正在积极寻求损害新生对这个问题的理解。一旦你学会编程,它就会影响你对这些问题的看法(以及你提供的例子)。当然,这可能是因为你的教授与新生思维脱节。但可能有很多方法可以解决这个问题,而你的教授使用了一种不适合你的方法。我希望如果你在上班时间去,教授会尝试一种不同的方法,也许是多种方法,直到他看到它“咔嗒”一声。我确实看到了,但我遇到的问题是,它正试图对它进行编码。我对Python没有任何正式或其他方面的经验,这是一个“给你,在到期日提交”的事情。
def knice(f,a,b,k):
    f(f(f(...(f(x)))) = x
    for i = a to b:
        y = f(i)
        if y = i break
    for j = z to k:
        y = f(y)
        if y = i break
def f(x):
    return 2*x-3

def knice(f,a,b,k):
x = a
while x <= b:
    n = 1
    y = f(x)
    if y == x:
        return 1
    while n <= k:
        y = f(y)
        n=n+1
        if y == x:
            return 1
    x=x+1   
return 0