长风破浪正其时,Python天堑变通途(3)(令人智熄的分支循环,优先级问题)

学习笔记:

1.常见运算符:

下面两行代码等价

a = a + 1
a += 1
b = b - 1
b -= 1
c = c * 10
c *= 10
d = d / 5
d /= 5

2.地板除法(砍掉小数位):

10 // 8 == 1

3.幂运算:

3 ** 2 == 9

4.四则运算优先级问题:

先乘除,后加减,先算括号里的,负号(-)(一元操作符)先和数字连在一起,and为二元操作符

5.幂运算比其左侧的一元操作符优先级高,比其右侧的二元操作符优先级低。

6.比较操作符:<>=

7.逻辑操作符:and , or , not

8.非0的整数值都解释为ture

9.优先级问题:

幂运算(有一元运算符的特例) > 正负号 > 算数操作符 > 比较操作符 > 逻辑运算符(not > and > or)

10.短路逻辑:

3 and 4 = = 4,而 3 or 4 = = 3

11.写出0到100所有奇数:

num = 0
while num <= 100:
    if (num % 2 == 1):
        print(num , end = ' ')
    num = num + 1

12.算出爱因斯坦阶梯问题:

x = 0
while not ((x%2==1) and (x%3==2) and (x%5==4) and (x%6==5) and (x%7==0)):
    x += 1
print('题目的解为:',end = '');print(x)
#while后面如果要两个条件同时成立记得加括号,因为not的优先级比and高

13.悬挂else:

C语言的就近原则

Python有缩进,可以避免悬挂else

14.三元操作符:small = x if 条件 else y(里面的条件为真,把x的值给small,条件为假时,把y的值给small)

x,y = 4,5
if x , y:
    small = x
else:
    small = y
small = x if x < y else y

15.断言(assert):

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

assert 3 > 4

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

name = '美树沙耶香'
'沙耶香' in name
True
#输出值
'纱耶香' in name
False

17.三元操作符的应用:

x,y,z = 6,5,4
#small = (x if x < y else y) if (x if x < y else y) < z else z
#判断x和y大小,输出的结果为x,y中较小的数,然后与z比较即可
small = x if (x<y and x<z) else (y if y<z else z)
print(small)
#else后面可以跟两个数

18.while条件(执行到某一位置时退出)

19.for循环:for 目标 in 表达式 :

>>> favor = 'sayaka'
>>> for i in favor:
	print(i , end=' ')

s a y a k a 
>>> member = ['巴麻美','美树沙耶香','鹿目圆','佐仓杏子','晓美焰']
>>> for each in member:
	print(each , len(each))

	
巴麻美 3
美树沙耶香 5
鹿目圆 3
佐仓杏子 4
晓美焰 3
>>> 

20.len:表示字符的长度

21.range(for循环的小伙伴):

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#默认从0开始,写10不包含10

22.组合使用:

>>> for i in range(2 , 10):
	print(i , end = ' ')

2 3 4 5 6 7 8 9 
#start会包含(2会包含在内),stop不包含(10不包含在内)

23.for的步进:

>>> for i in range(2 , 10 , 2):
	print(i , end = ' ')

2 4 6 8 
>>> 
#步进即为每一次往后数几个数

24.break和continue:

break:终止循环,并跳出循环体:

bingo = '枫原万叶和可莉'
answer = input('下个池子复刻谁:')
#while answer != bingo:
    #answer = input('博士,原神好玩吗?')
#print('所以旅行者你要快点攒原石哦')
while True:
    if answer == bingo:
        break
    answer = input('博士,原神好玩吗?')
print('所以旅行者你要快点攒原石哦')

continue:终止本轮循环,并开始下一轮循环:

for i in range(10):
    if i%2 != 0:
        print(i)
        continue
#如果i为奇数就把它打印出来,并跳出循环再来一遍
#example:第一次为0,不为奇数,那么+2打印,输出为2
#example:第二次为1,为奇数,直接打印
    i += 2
    print(i)

25.什么情况下我们要使循环永远为真?
用于游戏实现,因为游戏只要运行着,就需要时刻接收用户输入,因此使用永远为真确保游戏“在线”。操作系统也是同样的道理,时刻待命,操作系统永远为真的这个循环叫做消息循环。另外,许多通讯服务器的客户端/服务器系统也是通过这样的原理来工作的。所以永远为“真”虽然是“死循环”,但不一定是坏事,再说了,我们可以随时用 break 来跳出循环!

26.password system:

我的版本:

password = input('请输入开机密码(您共有3次输入机会):')
cishu = 0
while True:
    if '*' in password:
        password = input('您输入的密码含"*",请重新输入:')
        continue
    elif password == '040303':
        panduan = 1
        break
    else:
        print('密码错误')
        cishu += 1
        if cishu > 2:
            panduan = 0
            break
        else:
            print('您还有',3-cishu,'次机会',end = '')
            password = input('请重新输入:')
            continue
if panduan == 1:
    print('密码正确,已开机')
if panduan == 0:
    print('错误次数过多,已锁死')

范例:

1.  count = 3
2.  password = 'FishC.com'
3.   
4.  while count:
5.      passwd = input('请输入密码:')
6.      if passwd == password:
7.          print('密码正确,进入程序......')
8.          break
9.      elif '*' in passwd:
10.         print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
11.         continue
12.     else:
13.         print('密码输入错误!您还有', count-1, '次机会!', end=' ')    
14.     count -= 1

27.100-1000 的水仙花数:

我的

#for x in range(100,1000):
    #if x == (x//100)**3 + ((x%100)//10)**3 + ((x%100)-(x%100)//10*10)**3:
        #print(x)

范例:

for i in range(100, 1000):  
    sum = 0  
    temp = i  
    while temp:  
        sum = sum + (temp%10) ** 3  
        temp //= 10        
    if sum == i:  
        print(i)
#牛逼啊,这范例谁想的到

28.三色球问题:3红3黄6蓝,抓8个球的排列组合:

我的:

red = 3
while red:
    yellow = 3
    while yellow:
        print('红 '*red , '黄 '*yellow , '绿 '*(5-yellow))
        yellow -= 1
    red -= 1
yellow = 3
while yellow:
    print('黄 '*yellow , '绿 '*(8-yellow))
    yellow -= 1
#首次用到循环套循环,太聪明了
#(while red , red -=1) == (for red in range(0,4)

范例:

print('red\tyellow\tblue')
#/t的意思是对齐表格各列
for red in range(0, 4):
#-=此处可以等效为for,for更简单
    for yellow in range(0, 4):  
        for green in range(2, 7):  
            if red + yellow + green == 8:
#怎么让其成立:三个变量相加等于8
#注意,下边不是字符串拼接,因此不用“+”哦~  
                print(red, '\t', yellow, '\t', green)  

代码速查:

1.while:

while + 条件:
    while 为真时,执行循环内的内容
    break:跳出循环
    continue:跳出本次循环,直接进入下一次循环

2.断言:assert:

assert 3 > 4
输出为崩溃

3.成员资格运算符:in

name = '美树沙耶香'
'沙耶香' in name
True

4.三元操作符:

x if 条件 else y
条件为真:输出x
条件为假:输出y

5.for

for 目标 in 表达式

6.len:字符长度

len(string)

7.range

range(start,end,步进)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值