部分内容整理来自《零基础入门学习Python》–小甲鱼 编著
条件为假:
在Python看来,只有以下内容会被看做是假(注意冒号括号里面啥都没有,连空格都不要有!)
False None 0 () “” ‘’ [] {}
短路逻辑(short - circuit logic)或者叫惰性求值(lazy evaluation)
逻辑操作符有个有趣的特性:在不需要求值的时候不再进行操作。举个例子:表达式x and y,需要x 和 y另个变量同时为真(True)的时候,结果才为真。因此,如果当x变量的值是假(False)的时候,表达式立刻返回False,而不用去管y变量的值。
print(0 or 4 and 3 or 2) # 0 or 3 or 2 ==3
# or 只要第一个条件为真,那就等于第一个
print(2 or 1 < 3 and 2) # 2 or True(1) and 2 ==2 or 1 ==2
# print(3 and 2 > 1) # 3 and True == True
# print(2 > 1 and 3) # True and 3 == 3
# print(2 > 1 or 6) # True(短路逻辑)
6 or 2 > 1 # 6 or True == 6
3 or 2 > 1 # 3 or True == 3
0 or 5 < 4 # 0 or False == 0 False
5 < 4 or 3 # False or 3 == 3
5 > 2 or 6 # True or 6 == True
3 and 2 > 1 # 3 and True == True
0 and 3 > 1 # 0 and True == 0
2 > 1 and 3 # True and 3 == 3
3 > 1 and 0 # True and 0 == 0
3 > 1 and 2 or 2 < 3 and 4 or 3 > 2 # (True and 2) or (True and 4) or True
== 2 or 4 or True ==2
条件分支:if
if 条件:
条件为真(True)执行的操作
else:
条件为假(False)执行的操作
while 循环
while 条件:
条件为真(True)执行的操作
while 循环 +else:干完了能怎样,干不完就别想怎样
while 条件:
条件为真执行的代码
if 条件:
break
else:
while 循环没有被打断(没有被break)时执行的代码
条件表达式(三元操作符)
我门说“多少元”操作符的意思是这个操作符有多少个操作数。例如赋值操作符’=’是二元操作符,所以它有左边和右边两个操作数。例如‘-’是一元操作符,它表示负号,因为他只有一个操作数。自然,三元操作符也就是有三个操作数的运算符啦。
if x < y:
small = x
else:
small = y
如果上面的代码用三元操作符表示便是:
>>> assert 5 < 7
>>> assert 5 > 7
Traceback (most recent call last):
File "" , line 1, in <module>
assert 5 > 7
AssertionError
一般来说,可以用它在程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的时候,assert关键字就非常有用了。
for循环语句
虽说Python是c语言编写而来的,但是它的for 循环语句跟c语言的循环不太一样,Python的for循环显得更加智能和强大!它主要变现为他会自动地调用迭代器next()的方法,会自动捕获StopIteration异常并结束循环,所以它更像一个具有现代化气质的for循环语句。
have a try:
>>> kugua = "I am studying python!"
>>> for each in kugua:
print(each,end='')
I am studying python!
range( )
for 循环的小伙伴:range( )内建函数。
语法:
range( [start, ] stop[, step=1] )
这个BIF有三个参数,其中中括号括起来的是两个表示两个参数是可选的。step=1表示第三个参数的默认值是1.
range( )这个BIF的作用是生成一个从start 参数的值开始,到stop参数的值结束的数字序列。经常和for循环混迹于各种计数循环之间。
只传递一个参数的range(),例如range(5),他会将第一个参数默认设置为0,生成0~5的所有数字(注:包含0而不包含5)
>>> for i in range(5):
print(i)
0
1
2
3
4
>>> for i in range(2, 5):
print(i)
2
3
4
传递三个参数的range():
>>> for i in range(1, 10, 2):
print(i)
1
3
5
7
9
>>> for i in range(10,0,-2):
print(i)
10
8
6
4
2
range( )可以说是跟for 循环最合适做搭档的小伙伴了,当然for循环魅力强大,它还有其他各式各样的小伙伴配合实现乱七八糟的功能。
break 语句
break语句的作用是用来终止当前循环,跳出循环体。
>>> for i in range(10):
if i == 4:
break
print(i)
0
1
2
3
continue 语句
continue语句的作用是终止本轮循环并开始下一轮循环(这里要注意的是:在开始下一轮循环之前,会先测试循环条件)。举个例子:
>>> for i in range(10):
if i % 2 ==0:
print(i)
continue
i += 2
print(i)
0
3
2
5
4
7
6
9
8
11
作业:
1.写一个程序,判断给定的年份是否是闰年。
闰年定义:能被4整除但不能被100整除,或者能被400整除。
# 判断闰年
temp = input("Please input a year:")
while not temp.isdigit():
temp = input("Your input is wrong! Please input again:")
year = int(temp)
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
print(year, "is a leap year!")
else:
print(year, "is not a leap year!")
2.请编写一个程序,打印出0 ~ 100的所有奇数。
row = 0 # 用于分行
for i in range(100):
row += 1
if i % 2 == 1:
print(i, end=' ')
if row % 10 == 0:
print() # 打印空行
3.说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 or 9
not or and 的优先级为:not > and > or
按照优先级给它们加上括号:(not 1) or (0 and 1) or (3 and 4) or (5 and 6 )or(7 and 8) or 9
就是== 0 or 0 or 0 or 4 or 6 or 9 == 4
为什么是4?短路逻辑,3 and 4 = 4,而3 or 4 ==3.
4.目测以下程序会打印什么?
while True:
while True:
break
print(1)
print(2)
break
print(3)
会打印:
2
3
5. 编写一个程序,求100~999之间的所有水仙花数。
如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如153=1^3 + 5^3 + 3^3。
for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum += (temp % 10) ** 3 # 以此取得个、十、百位的三次幂
temp //= 10 # 依次去掉个、十、百位
if sum == i:
print(i)
6.计算 1 - 2 + 3 - 4 + … +99中除了88以外所有数的值
sum_number = 0
for i in range(1, 100):
if i == 88:
continue
if i % 2 == 1: # 奇数
sum_number += i
else:
sum_number += -i
print(sum_number)
7.设计一个验证用户密码的程序,用户只有三次机会输入错误,不过用户输入的内容包括“*”则不计算在内。
count = 3
_passwd = "jacky001"
while count:
passwd = input("Please input your password:")
if passwd == _passwd:
print("hello jack, entering the project...")
elif "*" in passwd:
print("There can't be '*' in the password, ", count, "times left", end=' ')
continue
else:
print("your password is wrong,", count - 1, "times left.", end=' ')
count -= 1