已采纳回答 / Soler索莱尔HO
确实你不可变的,如果说是这样子的:<...code...>单个元素在tuple定义之后不可变,我这里加的括号,此时这里就只有两个元素,就是括号内,括号的内容就是List。所以例子中这句话也是很好的解释。你看的时候多看看这个图形和句子就会明白的。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
2018-07-29
最赞回答 / qq_囚_8
可以直接写for index, name in t:因为enumerate的用处就是把list变成索引从0开始的tuple而zip也是变成tuple,如果再次使用enumerate(t),那么name就变成了zip出来的tuple,也就是t,会出现以下结果:
0 - (1, 'Adam') 1 - (2, 'Lisa') 2 - (3, 'Bart') 3 - (4, 'Paul')
2018-07-29
已采纳回答 / 菜菜菜牙
因为程序是按代码的顺序来的 如果你放后面的你话 他会先执行前面的代码 就是说当上次循环执行,if n > 20: 时因为n=20 ,所以条件成立程序还会在循环执行一次sum += x x *= 2 n += 1 #到这n已经等于21了,所以说这个程序实际是执行了21次,而不是20次。 if n > 20: # 如果你想放在后面 吧这个条件改成 n=20就行啦
2018-07-28
最赞回答 / 阿德罗斯
<...图片...>我理解你说的是这个样子,在实验里也是可以通过的,至于在平常,比如你写了两个函数,第二个需要用第一个函数的返回值,但是如果你第一个结尾写的print,那么在第二个函数中调用第一个函数时就没有办法获得你想要的返回值(第一个函数的返回值将会是None),总的来说对于有返回值的函数如果你使用print,他的结果对于其他的函数没有用,你也无法进行对这个返回值操作
2018-07-28
最赞回答 / qq_沧海啸_0
意思就是 机器的处理顺序是从左往右的,第一个函数 fn1(a,b=1,c=2) 中有默认参数的项是 b = 1,c = 2 只能放在非默认参数a的后面,不能放在它前面。注意:像b=1, c= 2 这种有赋值默认初始值的项叫做 默认参数,那种没赋值的 叫非默认参数,非默认参数 如果用户调用函数的时候 不传值进来的话就会有问题,有个默认参数的话 用户不传值进来也没事,因为有默认值。
2018-07-28
最赞回答 / 精慕门1012678
按序循环:step1: x=1,y=1,if为false,继续循环(看代码块,优先循环y)step2:x=1,y=2,if为true,打印10*x+y值为12(注意x,y均为整数型,直接+就求和了,组成两位数就需要用公式10*x + y)step3:后续内推,当y=9时,循环会在往上,从x=2开始循环
2018-07-28