布尔逻辑
1、逻辑相等
咱们从==开始吧。公当p和q包含的真值相同,即都为True或都为False时,表达式p==q的结果才为True。表达式p != q检测p和q是否不同,公在p和q不同时才返回True。
2、逻辑与
仅当p和q都为True时,布尔表达式的结果才为True,而在其他情况下都为False。表4-1的第5列总结了各种组合的结果。
3、逻辑或
公当p和q至少有一个为True时,布尔表达式p or q才为True。表4-1的第6列对此做了总结。唯一稍微有点棘手的情形是,p和q都为True。在这种情形下,表达式p or q的结果为True。
4、逻辑非
最后,在p为False时,布尔表达式not p的结果为True;而在p为True时,结果为False。结果与变量的值相反。
布尔运算的优先级(按从高到低的顺序排列)
p == q
p != q
not p
p and q
p or q
if语句
#password1.py
pwd = input('What is the password? ')
if pwd == 'apple': #note use of == instead of =
print("Logging on ...")
else:
printf("Incorrect password.")
print("All done!")
代码块和缩进
Python的一个与众不同之处是,使用缩进来标识代码块。例如:
代码行print('Logging on ...')和print('Incorrect password')是两个不同的代码块。这些代码块只有一行,但Python允许你编写包含任意数量语句的代码块。
if/elif语句
age = int(input('How old are you?'))
if age <= 2:
print("free")
elif 2 < age < 13:
print("child fare")
else:
print("adult fare")
循环
循环用于重复地执行代码块,Python有两种主要的循环:for循环和while循环。for循环通常比while循环更容易使用,也不那么容易出错,但没有while循环灵活。
for循环
基本for循环重复执行给定代码块指定的次数,如例如:下面的代码片段在屏幕上打印数0〜9
for i in range(10): #打印0〜9
print(i)
for j in range(5, 10): #打印5~9
print(j)
for循环的第1行被称为for循环头。for循环总是以关键字for打头,接下来是循环变量(这里为i),然后是关键字in。关键字in后面通常(但并非总是)是range(n)和结束符号:for循环重复执行循环体(循环头后而后 语句块)n次。
每次执行循环时,循环变量都被设置为下一个值。默认情况下,初始值为0,并逐递增到n-1 (而不是n!)。
如果想修改循环的初始值,可在range中添加初始值:
例如:
for j in range(5, 10): #打印5~9
print(j)
while循环
第二种Python循环是while循环 。请看下面的程序:
#while10.py
i = 0
while i < 10:
print(i)
i = i + 1 #add 1 to i
这个程序在屏幕上打印数字0〜9。它比for循环要复杂得多,但也更灵活。
比较for循环和while循环
下面来通过一些示例演示如何使用for循环和while循环解决相同的问题。另外,还将份介绍一个使用for循环编写不出来的简单程序。
1、计算阶乘
#forfact.py
n = int(input("Enter an integer >=0: "))
fact = 1
for i in range(2, n + 1):
fact = fact * i
print(str(n) + " factorial is " + str(fact))
下面是另一种使用while循环计算阶乘的方式:
#whilefact.py
n = int(input("Enter an integer >= 0: "))
fact = 1
i = 2
while i <= n:
fact = fact * i
i = i + 1
print(str(n) + " factorial is " + str(fact))
2 、计算用户输入的数字的总和
下面的程序让用户输入一些数字,然后打印出这些数字的总和。这是使用for循环的版本:
#forsum.py
n = int(input("How many numbers to sum? "))
total = 0
for i in range(n):
s = input("Enter number " + str(i + 1) + ": ")
total = total + int(s)
print("The sum is " + str(total))
使用while循环的版本:
#whilesum.py
n = int(input("How many numbers to sum? "))
total = 0
i = 1
while i <= n:
s = input("Enter number " + str(i) + ": ")
total = total + int(s)
i = i + 1
print("The sum is " + str(total))
3、计算未知个数字的总和
#donesum.py
total = 0
s = input('Enter a number (or "done"): ')
while s != 'done':
num = int(s)
total = total + num
s = input('Enter a number (or "done"): ')
print("The sum is " + str(total))
6、跳出循环和语句块
break语句提供了一种便利方式,让你能够从循环体内的任何地方跳出循环。例如,下面是另一种计算未知个数总和的方式:
#donesum_break.py
total = 0
while True:
s = input('Enter a number (or "done"): ')
if s == 'done':
break #jump out of the loop
num = int(s)
total = total + num
print("The sum is " + str(total))
7、循环中的循环
循环中的循环也叫嵌套循环,在编程中相当常见。例如,下面是一个打印十十乘法表的程序:
#timestable.py
for row in range(1, 10):
for col in range(1, 10):
prod = row * col
if prod < 10:
print(' ', end = '')
print(row * col, ' ', end = '')
print()