马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 圣剑三刀。abx 于 2018-6-28 15:46 编辑
嗯第九篇了,坚持要学下去,虽然要中考了,但还是一无既往的浪hhh。
这一篇动动手板块较难会慢慢更新,对就是这样啦。
还有这篇已经搁置一段时间了,因为学校挺忙的。。。会努力回忆一下。
先是笔记啦:
1、这节课的内容为主要为循环语法
2、while循环:(1)语法:while 条件:
循环体
3、for 循环:(1)语法:for 目标 in 表达式:
循环体
(2)注意:字符串变量会打印一个字母然后自动换行:
那个目标的值是for循环打印出来的最后一个数据的值
4、新学bif:(1)len() #计算参数长度并返回,数字类型无长度而言。
(2)range() #range([start,]stop[,step=1])不包含stop值!
(3)list()#把数据变成列表显示出来
5、两个关键语句:(1)break #终止当前循环
(2)continue #终止本轮循环并开始下一轮循环。
6、效率改进:循环体内的内容尽量简要,能提前搞定能提高不少效率。
动动手思路:
0、break & continue的运用
1、%10提取末尾数字,配合//接着提取倒数第二位
2、for套for适用排列组合
动动手板块:
1、密码检验
先看看我自己写的:times = 4
answer = 'FishC.com'
print('请输入密码:',end='')
while True:
i = input(' ')
if '*' in i:
print('密码中不能含有“*”!您还有' , times , '次机会!请输入密码:',end=' ')
continue
elif i != answer:
times -= 1
if times == 0:
print('机会用完啦!')
break
print('密码输入错误!您还有' , times , '次机会!请输入密码:',end=' ')
else:
print('答案正确,进入程序......')
break
然后是正确答案:times= 3
answer = 'FishC.com'
while times:
i = input('请输入密码:')
if i == answer:
print('密码正确,进入程序......')
break
elif '*' in i:
print('密码中不能含有“*”!您还有' , times , '次机会!',end=' ')
continue
else:
print('密码输入错误!您还有' , times-1 , '次机会!',end=' ')
times -= 1
相比之下肯定是标准答案比较简洁,当时自己写的纠结于机会用完后要打印一个“机会用完了”,所以比较烦,然后也有一些显示次数和程序布局的问题,最后还不错吧,嗯。
这道题的目的呢是练习continue和break语法的具体应用,看出来还是很妙的吧。
2、水仙花数a = 1
b = c = 0
while True:
if c == 10:
c = 0
b += 1
if b == 10:
b = 0
a += 1
if a == 10:
break
i = a*100 + b*10 + c
if i == a**3 + b**3 + c**3:
print(i)
c += 1
这个是我自己写的。然后有点烦是吧hh。当时看到题目,其实也很快想到了用for和range的那一对好基友搭档,但问题就在于,我发现我没办法单独把每一位的数字提取出来,然后再作处理。这题是要求我们把每一位数字都提取出来然后**3再加起来一个处理。那怎么办呢。所以我当时换了个思路,决定舍弃for循环,而是单独把三位用abc来赋值,这样就可以轻松处理计算比较的过程,问题就在于还要设置一个让它每一次都变大的代码,所以就有了后面一大段,还是可以的吧。虽然烦了些。
下面我们来看答案for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10
if sum == i:
print(i)
可以看出答案是相当相当简洁,精妙。用了前面我放弃的for循环,用sum来作为中转站,temp=i 让temp相当于i的一个副本,在上面修改就不会有什么问题了。最重要的是%10能提取出数字的末位,//10能砍掉最后一位,再%10就能求出原数倒数第二位。接着因为三次操作都是一样,在把它们放入一个循环中,处理好了以后,再和i做比较,哇简直完美!
3、三色球问题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)
这题我思路有的,操作不会。也没勇气风骚的for循环套for循环,大开眼界。这里三色球的主体思路就是红0黄0绿0,如果所有球加起来8个就对了,然后再红0黄0绿1这样下去,交给计算机,很快解决hhh。所以就用for套for来实现啦,先是最内层的2~7再慢慢变上一层的,至于为什么最后一个是2~7,其实你0~7也行啊,但经过分析,发现绿球至少2个,所以2~7就节省了程序时间啦,一点点时间也好,好多一点点不就甜死了吗。咳咳。不扯那个奶茶了。。。反正变成越简单越好。之后说实话我在运行前真没看懂,第一行和最后一行代码是什么意思。运行时惊爆眼球,原来,原来是
红 黄 绿
0 1 7
。。。。。。
这样的形式
也就是说,\t就是空开一段距离的意思喽?!!!!
啊。。。。。 |