艰苦学习python ex24

艰苦学习python ex24,python,python-2.x,Python,Python 2.x,我不明白为什么豆、罐、板条箱=秘方(起点)指的是果冻豆、罐、板条箱 这是从艰苦的方式学习python的Ex24。下面我将给出一个几乎相同答案的Stackoverflow问题的答案,但没有充分解释,因此我真正掌握了它 print "Let's practice everything." print 'You\'d need to know \'bout escape with \\ that do \n newlines and \t tabs.' poem = """ \tThe love

我不明白为什么
豆、罐、板条箱=秘方(起点)
指的是
果冻豆、罐、板条箱

这是从艰苦的方式学习python的Ex24。下面我将给出一个几乎相同答案的Stackoverflow问题的答案,但没有充分解释,因此我真正掌握了它

print "Let's practice everything."

print 'You\'d need to know \'bout escape with \\ that do \n newlines and \t tabs.' 

poem = """ \tThe lovely world with logic so firmly planted cannot discern \n the needs of love nor comprehend passion from intuition and requires an explanation \n\t\twhere there is none. """

print "-------------"
print poem
print "-------------" 

five = 10 - 2 + 3 - 6

print "This should be five: %s" % five 

def secret_formula(started):
    jelly_beans = started * 500 
    jars = jelly_beans / 1000 
    crates = jars / 100 
    return jelly_beans, jars, crates 

start_point = 10000

beans, jars, crates = secret_formula(start_point)

print "With a starting point of : %d" % start_point
print "We'd have %d beans, %d jars, and %d crates." % (beans, jars, crates) 

start_point = start_point / 10 

print "We can also do that this way:"

print "We'd have %d beans, %d jars, and %d crates." % secret_formula(start_point)
这是我在别处找到的答案:

由于Python的作用域规则,jelly_bean的名称仅在secret_formula函数中有效。这就是为什么不能在函数外通过诸如print jelly_beans之类的语句引用它。 请注意,secret_公式将一个元组返回给它的调用者。因此,当您键入:beans、jars、crates=secret\u formula(起始点)时,您可以指定对secret\u formula的调用(使用特定参数),并将元组的内容分配给三个不同的名称

  • jelly_bean的返回值被分配给bean
  • JAR的返回值被分配给JAR
  • 板条箱的返回值分配给板条箱
问:为什么我们不能称豆子为果冻豆?为什么我们可以用罐子和板条箱

我知道我们把1000乘以50000

然而,为什么我们会在以下位置得到答案:

print "We can also do that this way:"
print "We'd have %d beans, %d jars, and %d crates." % secret_formula(start_point)
为什么我们不能称豆子为果冻豆?为什么我们可以用罐子和板条箱

这不是真的。你可以随意调用你的变量,甚至是果冻豆

jelly_beans, jars, crates = secret_formula(10000)
但请记住,这些变量与函数中的变量无关


最好的学习方法就是去做。

嗨,我实际上是在练习。但我最大的困惑来自这个问题:豆子、罐子、板条箱=秘密配方(起点)。如果10000=起点,我不知道我们如何得到50k作为答案。豆子还是指果冻豆吗,是这样吗?我们可以随便叫“豆子”吗?你是这么说的吗?我在工作,所以不能真正尝试。让我困惑的是:由于Python的作用域规则,jelly_bean这个名称仅在secret_formula函数中有效。这就是您不能通过语句引用它的原因。[]@JohnSmith:
secret\u formula()
函数中名为
jelly\u beans
的整数对象返回到脚本的主要部分,在那里它获得名称
beans
。如果您愿意,可以在脚本的主要部分给它命名为jelly_beans,但是Zed正试图向您展示函数内部的名称如何是该函数的本地名称,因为函数外部的代码不知道函数内部定义的名称。明白了。因此,它可以很容易地成为Shop,Drop,Flop=secret\u公式(起点)。在那个时候,商店仍然会参考果冻豆,扔到罐子里,扔到板条箱里。@JohnSmith:明白了@Nz1:我想你是在问如果一个函数被定义在另一个函数中会发生什么。最里面的函数可以读取在外部作用域中定义的变量,但它(通常)不能修改它们,如果它尝试修改,则会创建一个新的同名局部变量。外部函数甚至看不到内部函数中定义的变量。但我怀疑这对于你目前的学习水平来说可能有点太高了,我不想让你感到困惑您是否同意这一行:
打印“我们将有%d个豆子、%d个罐子和%d个板条箱。”%(豆子、罐子、板条箱)
?在这里粘贴代码一开始有点混乱,但我相信您很快就会习惯的。:)(但我会帮你纠正这个错误)。然而,我的问题是:你明白那行在做什么吗?
“我们有%d个豆子、%d个罐子和%d个板条箱。”%%
希望在字符串中插入3个数字的元组,每个
%d
。您可以提供类似
(50,10,5)
(bean,jar,clates)
,(假设
bean
jar
clates
都是一个数字)的元组。但是您也可以执行
“我们有%d个bean、%d个罐子和%d个板条箱。”%secret\u formula(起点)
,因为
secret\u formula
函数返回一个包含3个数字的元组。
tuple
是标准Python序列类型之一。它类似于
列表
,只是元组是不可变的,这意味着元组中的项不能更改。你用方括号写一个列表,但你用圆括号写一个元组,在某些情况下你可以省略括号,这就是
secret\u formula
return
语句中发生的情况。在这行:
beans、jars、crates=secret\u formula(起始点)
start
secret\u formula
内部使用的名称。当你调用它时,你可以传递一个数字,例如
secret\u formula(42)
,或者你可以传递绑定到一个数字的任何名称,比如
start\u point
。但我们最好到此为止:所以评论真的不是一个进行广泛讨论的好地方!