前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python学习笔记(六)-循环

Python学习笔记(六)-循环

作者头像
张树臣
发布2018-05-15 16:46:16
9190
发布2018-05-15 16:46:16
举报
  1. if not (money < 100): 这行代码相当于?
if money >= 100:
  1. assert 的作用是什么?

assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。 什么情况下我们会需要这样的代码呢?当我们在测试程序的时候就很好用,因为与其让错误的条件导致程序今后莫名其妙地崩溃,不如在错误条件出现的那一瞬间我们实现“自爆”。 一般来说我们可以用Ta在程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。

  1. 假设有 x=1,y=2,z=3,请问如何快速将三个变量的值互相交换?
x, y, z = z, y, x
  1. 猜猜 (x < y and [x] or [y])[0] 实现什么样的功能?

这其实是 Python 的作者还没有为 Python 加入三元操作符之前,Python 社区的小伙伴们灵活的使用 and 和 or 搭配来实现三元操作符的功能

  1. 成员资格运算符

Python 有一个成员资格运算符:in,用于检查一个值是否在序列中,如果在序列中返回 True,否则返回 False。

例如:

>>> name = '小甲鱼'
>>> '鱼' in name
True
>>> '肥鱼' in name
False

5. 使用 if elif else 在大多数情况下效率要比全部使用 if 要高,但根据一般的统计规律,一个班的成绩一般服从正态分布,也就是说平均成绩一般集中在 70~80 分之间,因此根据统计规律,我们还可以改进下程序以提高效率。

print("输入分数,计算评级")
score = input("输入分数")
scr = int(score)
if 100 >= scr >= 90:    
    print("A")
else:    
    if 90 > scr >= 80:        
        print("b")
    else:        
        if 80 > scr >= 60:            
            print("C")
        else:            
            if 60 > scr >= 0:                
                print("D")
            else:                
                print("end")

6. Python 中的三元操作符

small = x if (x < y and x < z) else (y if y < z else z)

7. range()函数的用法

>>> range(1,5) #代表从1到5(不包含5)
[1, 2, 3, 4]
>>> range(1,5,2) #代表从1到5,间隔2(不包含5)
[1, 3]
>>> range(5) #代表从0到5(不包含5)
[0, 1, 2, 3, 4]

8. break 和 continue 在循环中起到的作用

break语句的作用是终止当前循环,跳出循环体。 continue语句的作用是终止本轮循环并开始下一轮循环(要注意的是:在开始下一轮循环之前,会先测试循环条件)。

9. 什么情况下我们要使循环永远为真?

比如用于游戏实现,因为游戏只要运行着,就需要时刻接收用户输入,因此使用永远为真确保游戏“在线”。操作系统也是同样的道理,时刻待命,操作系统永远为真的这个循环叫做消息循环。另外,许多通讯服务器的客户端/服务器系统也是通过这样的原理来工作的。

所以永远为“真”虽然是“死循环”,但不一定是坏事,再说了,我们可以随时用 break 来跳出循环!

10. 以下代码效率方面怎样?有没有办法可以大幅度改进(仍然使用while)?

i = 0
string = 'ILoveFishC.com'
while i < len(string)):    
    print(i)
    i += 1

这段代码之所以“效率比较低”是因为每次循环都需要调用一次len()函数

i = 0
string = 'ILoveFishC.com'
length = len(string)
while i < length:    
    print(i)
    i += 1

11. 设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内。

i=0
myname='sa'
mypwd='pwd'
while 1:
    name=input('请输入用户名')
    pwd=input('请输入密码')
    if ('*' in name) or ('*' in pwd) :                print('输入的内容中不能包含*')
        continue    
    if name==myname and pwd==mypwd :        
        print('login success')
        break    
    else:
        i+=1
        #print('用户名或者密码错误,你还有'+str(3-i)+'次机会')        
        print('密码输入错误!您还有', 3-i, '次机会!', end=' ')
        if i==3:            
            print('3次机会用完,今日不能再次登录!')

12. 编写一个程序,求100~999之间的所有水仙花数。 如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数

for i in range(100, 1000):    
    sum = 0
    temp = i
    while temp:        
        sum = sum + (temp%10) ** 3
        temp //= 10         # 注意这里要使用地板除哦~
    if sum == i:        
        print(i)

13. 三色球问题 有红、黄、蓝三种颜色的求,其中红球 3 个,黄球 3 个,蓝球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。

print('红-黄-蓝')
for i in range(4):    
    for j in range(4):        
        for k in range(7):            
            if i+j+k==8:                
                print(i,'\t',j,'\t',k)
print('红-黄-蓝')
for i in range(4):    
    for j in range(4):        
        for k in range(2,7):            
            if i+j+k==8:                
                print(i,'\t',j,'\t',k)

注释:range(2, 7)是产生[2, 3, 4, 5, 6]5个数,蓝球不能是1个,因为如果蓝球是1个的话,红球+黄球需要有7个才能符合题意,而红球和黄球每种只有3个,因此是range(2, 7) 两种思路:1是绿球不能是0或1,因为如果绿球是1个的话,红球+黄球需要有7个才能符合题意,而红球和黄球每种只有3个,因此是range(2, 7)。 2是因为有条件(i+j+k==8)的限制,不需要考虑蓝球取值,因此是range(7):

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试经验与教训 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档