|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、第006讲:print(2**2**32)会内存不够用,但为什么print((2**2)**32)却可以呢?
二、第007、008讲:早期的三元操作符(x < y and [x] or [y])[0],我不是很明白为什么x,y要加中括号且为什么要加0及其中括号?
三、第009讲:水仙花数的解答程式如下
- for i in range(100, 1000):
- sum = 0
- temp = i
- while temp:
- sum = sum + (temp%10) ** 3
- temp //= 10 # 注意这里要使用地板除哦~
- if sum == i:
- print(i)
复制代码
但我將temp拿掉,如下
- for i in range(100, 1000):
- sum1 = 0
- while i:
- sum1 = sum1 + (i % 10)**3
- i = i // 10
- if sum1 == i:
- print(i)
复制代码
程式会跑不出来,但我的问题是在i = 100时,运行后,i 会是等于0,第一次回圈跑完后,回到for 时,i 为什么不会自己再赋值为101,再继续往下跑呢?
一、第006讲:print(2**2**32)会内存不够用,但为什么print((2**2)**32)却可以呢?
结合性的问题,第一种情况会是2**(2**32)!这是2的多少次方啊! 后面是4的32次方,明显比第一个小的多
二、第007、008讲:早期的三元操作符(x < y and [x] or [y])[0],我不是很明白为什么x,y要加中括号且为什么要加0及其中括号?
因为x和y并不一定就是一个整形数据,后面去[0]就是取第一个元素
三、第009讲:
你的修改方案中while循环结束后i的值为0,那么sum1 == i 的判断永远不会成立
另外,每一轮for循环结束,i的值不会受到内部的任何影响,也就是i为100结束后下一轮i的值为101,你可以在for循环的第一行加上 print(i) 试试
|
|