零基础学习python第9讲求解
0.为什么以下代码没限制count>=0,却能限制用户次数为3次count = 3
password = 'FishC.com'
while count:
passwd = input('请输入密码:')
if passwd == password:
print('密码正确,进入程序......')
break
elif '*' in passwd:
print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
continue
else:
print('密码输入错误!您还有', count-1, '次机会!', end=' ')
count -= 1
1.求解释解题思路以及代码编写思路: 编写一个程序,求 100~999 之间的所有水仙花数。
for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10 # 注意这里要使用地板除哦~
if sum == i:
print(i)
2.求解释解题思路以及代码编写思路:有红、黄、蓝三种颜色的求,其中红球 3 个,黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配
print('red\tyellow\tgreen')
for red in range(0, 4):
for yellow in range(0, 4):
for green in range(2, 7):
if red + yellow + green == 8:
# 注意,下边不是字符串拼接,因此不用“+”哦~
print(red, '\t', yellow, '\t', green)
共三个问题,麻烦都解答一下,谢谢 第一个问题
为啥有三次?因为3 -3 =0,每循环一次减一
如果你输入带有 * 号,你甚至可以进行100次,因为有个continue 就不会让count-1
如果每人只有三次输入机会,可以把count变成2
count = 2
password = 'FishC.com'
while count:
passwd = input('请输入密码:')
if passwd == password:
print('密码正确,进入程序......')
break
elif '*' in passwd:
print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
# continue
else:
print('密码输入错误!您还有', count, '次机会!', end=' ')
count -= 1
如果是第一次输入错误后还有三次机会可以这样改
count = 3
password = 'FishC.com'
print("只有三次机会!")
while count:
passwd = input('请输入密码:')
if passwd == password:
print('密码正确,进入程序......')
break
elif '*' in passwd:
print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
# continue
else:
print('密码输入错误!您还有', count, '次机会!', end=' ')
count -= 1 第二个代码
水仙花数就是 判断这个数的个位三次方 + 十位三次方 + 百位三次方的和是否为该数
一个数 % 10 相当于取这个数的个位值
而地板除 // 10 就时去掉这个数的个位
按照水仙花的判定标准,我们可以对一个数 % 10,取它的个位的三次方,然后// 10将个位去掉,然后又取它的新个位也就是原来的十位,接着再去掉...
最后我们就可以获得这个数的 个 十 百位的三次方和,然后和原来的数据一比较就好
本代码就是这个思路
第三就是简单的组合排序
题目说任取8个球,统计出现的可能,那你就一个个带进去就好
就比如没有红球的情况 说明绿 蓝要有8个 ,那就是 0 3 5 和 0 2 6,依次类推。
可能你对代码不理解
for red in range(0, 4): #range(0,4) 相当于一个左闭右开区间[0,4) 取值0,1,2,3
for yellow in range(0, 4): # 同上
for green in range(2, 7): # 同理 取值 2,3,4,5,6, 为啥是(0,7)? 因为假设红三 黄三,那最起码也要绿二,说明不存在只有一个绿球的情况 while count就是一个限制,当while条件为True时才能运行循环代码 大马强 发表于 2022-3-21 22:35
第二个代码
水仙花数就是 判断这个数的个位三次方 + 十位三次方 + 百位三次方的和是否为该数
一个数 % 10 ...
0.为什么count等于0的时候就会退出循环,而不会继续减下去呢
第一次输入错误后还有三次机会的代码好像还是一共三次机会~
1.代码里取十位数是temp //= 10,为什么不是temp = temp // 10呢 大马强 发表于 2022-3-21 22:35
第二个代码
水仙花数就是 判断这个数的个位三次方 + 十位三次方 + 百位三次方的和是否为该数
一个数 % 10 ...
水仙花:代码中if与while平行,代码是怎么个执行顺序?将if变成while的下一级怎么就答案不对了
for i in range(100,1000):
sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10
if sum == i:
print(i)
在每次循环中都会给sum赋值,为什么不会影响下一个循环中的sum
65655797 发表于 2022-3-23 20:40
0.为什么count等于0的时候就会退出循环,而不会继续减下去呢
第一次输入错误后还有三次机会的代码好像还 ...
while语句判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。
当判断条件假 false 时,循环结束。 gtkwidget 发表于 2022-3-23 21:04
while语句判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。
当判断条件假 false 时 ...
明白了,虽然负数也是true,但是会先到0为false时就结束了,不再往下减 65655797 发表于 2022-3-23 21:10
明白了,虽然负数也是true,但是会先到0为false时就结束了,不再往下减
是的,当temp = 0时就跳出循环了
第二个问题
因为 temp //= 10 就是 temp = temp // 10
65655797 发表于 2022-3-23 20:47
水仙花:代码中if与while平行,代码是怎么个执行顺序?将if变成while的下一级怎么就答案不对了
首先你要知道 【i】 是待判断的数
而判断的规则是 个 十 百位的三次方和是否等于【i】
而while循环就是实现 个 十 百位的三次方相加,所以必须等到while结束才能再判断
赋值就是后面的值来覆盖前面的值,那下一次的循环当然不会被上一次循环影响 0.因为0在python中代表False,while在条件为False是停止。这是一个小技巧,我编程时经常用,如:
while not life:
sys.exit(0)#退出程序
页:
[1]