条件语句

  • if条件:if语句的条件表达式结果布尔值为真时执行if语句后的代码。
  • if语法
if expression:
    expr_true_suite
sd1 = 3
sd2 = 3
if sd1 == sd2:
    print('the square\'s area is',sd1*sd2)
  • if else语句:与 if 搭配使用的 else,如果 if 语句的条件表达式结果布尔值为假,那么程序将执行 else 语句后的代码。
  • 代码块必须缩进,else语句不缩进注意冒号
  • if-else语法:
if expression:
    expr_true_suite
else:
    expr_false_suite
sd1 = int(input('the first side:'))
sd2 = int(input('the second side:'))
if sd1 == sd2:
    print('the square\'s area is',sd1*sd2)
else:
    print('the rectangle\'s area is',sd1*sd2)
  • if elif语句elif相当于else if一般用来验证多个表达式是否为真,elif后面所加条件的布尔值为真时执行elif后的代码,解决多分支结构
  • if elif语句的语法
if expression:
    expr_true_suite
elif expression2:
    expr_true_suite
elif expressionN:
    expr_true_suite
else:
    none_of_the_above_suite
grade = int(input('请输入分数:'))
if 90 < grade <= 100:
    print('成绩为优')
elif 80 < grade <= 90:
    print('成绩为良')
elif 70 < grade <= 80:
    print('成绩为差')
else:
    print('成绩不及格')
  • 重点注意:if三种语句缩进的使用
  • 条件嵌套:在条件语句中继续加入条件
grade = int(input('请输入分数:'))
if 90 < grade <= 100:
    print('成绩为优')
elif 80 < grade <= 90:
    if grade > 85:
        print('成绩为中')
    else:
        print('成绩为良')
elif 70 < grade <= 80:
    print('比较差')
else:
    print('成绩不及格')
grade = int(input('请输入分数:'))
if 90 < grade <= 100:
    print('成绩为优')
elif 80 < grade <= 90:
    print('成绩为中')
elif 70 < grade <= 80:
    if grade > 75:
        print('成绩为良')
    else:
        print('比较差')
else:
    print('成绩不及格')
  • 猜数字小游戏:
from random import randint
x = randint(0,300)
guess = int(input('请输入一个0到300之间的数字:'))
if guess > x:
    print('大了大了')
elif guess < x:
    print('小了小了')
else:
    print('恭喜你猜中了!')
  • 条件表达式:三元操作符:x if E else y
x = 3
t = 1 if x > 0 else 0
print(t)
  • 断言(assert)
  • 当关键字后边的条件为假时,程序自动崩溃并抛出AssertionError的异常
assert  5 > 8
  • 后边的条件为真时,自动跳过,一般用assert在程序中置入检查点
assert  5 < 8
  • assert可以用来确保程序中的某个条件一定为真时让程序继续工作。
range()函数
  • 产生一系列整数,返回一个range对象,为左闭右开区间
range(start,end,step=1)//开始值,结束值,步长
range(start,end)#步长为1
range(end)#默认从0开始步长为1,步长是1的就是默认参数值的差
>>> list(range(3,11,2))
[3, 5, 7, 9]
>>> list(range(3,11))
[3, 4, 5, 6, 7, 8, 9, 10]
>>>

循环

  • while循环
  • while语法
while expression:
	suite_to_repeat
	
sum = 0
j = 1
while j < 10:
    sum += j
    j += 1
print(sum)
print(j)
  • for循环:获取可迭代对象:iterable_object一次性产生一个迭代器iterator,可迭代对象指可以按次序迭代,也就是循环的对象,迭代器是一个特殊的可迭代对象,可以在迭代到某一个元素时候,才计算这个元素,适合遍历很大甚至无限的集合,枚举序列元素函数:enumerate()函数返回的就是迭代器
  • for语句的执行时执行时先取可迭代对象里面的一个值,执行语句序列,再取下一个值,在执行语句序列,直到没有元素可取
  • for循环语法
for iter_var in iterable_object:
	suite_to_repeat
  • range()函数返回的是可迭代对象
for i in range(3,11,2):
    print(i,end=' ')
for i in range(3,11,2):
	print(i)#打印出来的是一个竖列
  • 字符串属于序列本身也是可迭代的
s = 'python'
for i in s:
    print(i,end=' ')
  • for循环在遍历序列类型对象时有两种遍历方式:一种就是直接遍历每一个序列项称为序列项迭代,第二种是遍历序列当中每一个元素的索引,通过索引返回元素,这种方式称为索引迭代,序列索引是从0开始的,通过索引访问元素的方式是sequcence[index]
s = 'python'
for i in range(len(s)):#索引从0到字符串的长度减1
    print(s[i],end=' ')#访问以后输出
  • for循环就是将一些复杂的语法机制隐藏起来用户只需要简单的方式就能表达功能
>>> x = iter(range(3,11,2))//首先用iter()函数基于可迭代对象产生一个迭代器
>>> next(x)//再调用迭代器对象的next()方法获取每一个值
3
>>> next(x)
5
>>> next(x)
7
>>> next(x)
9
>>> next(x)
  • 判断可迭代对象或者迭代器的方法
>>> from collections.abc import Iterator,Iterable
>>> isinstance(range(10),Iterator)
False
>>> isinstance(iter(range(10)),Iterator)
True#迭代器
>>> isinstance(range(10),Iterable)
True#可迭代对象
  • 猜数小游戏利用循环
from  random import randint#不限次数
x = randint(0,300)
guess = int(input('请输入一个0到300之间的数字:'))
while guess != x:
    if guess > x:
        print('大了大了')
        guess = int(input('请重新输入一个0到300之间的数字:'))
    else:
        print('小了小了')
        guess = int(input('请重新输入一个0到300之间的数字:'))
print('恭喜你猜对了!')
###
from  random import randint
x = randint(0,300)
for count in range(5):
    guess = int(input('请输入一个0到300之间的数字:'))
    if guess == x:
        print('恭喜你猜对了')
    elif guess > x:
        print('大了大了')
    else:
        print('小了小了')
###
from  random import randint
x = randint(0,300)
i = 0
while i<5:
    guess = int(input('请输入一个0到300之间的数字:'))
    if guess == x:
        print('恭喜你猜对了')
    elif guess > x:
        print('大了大了')
    else:
        print('小了小了')
    i += 1
  • 利用辗转相除法计算x和y的最大公约数:
x = eval(input('x='))//转换数据类型相当于去掉引号
y = eval(input('y='))
if x < y:
    x,y = y,x
while x % y != 0:
    r = x % y
    x = y
    y = r
print('最大公约数为',y)
  • 把一元分成一分、两分和五分凑成一元钱的方案
i,j,k = 0,0,0
count = 0
for i in range(21):
    for j in range(51):
        k = 100 - 5*i - 2*j
        if k >= 0:
            count += 1
print('count=',count)

break和continue语句

  • break语句:终止当前循环,执行循环之后的语句
  • 求素数小练习:算法:不能被2~根号x都不能整除的
from math import  sqrt
j = 2
while j <= 100:
    i = 2
    k =sqrt(j)
    while i <= k:
        if j % i == 0:break
        i += 1
    if i > k:
        print(j,end=' ')
    j += 1
from math import  sqrt
for j in range(2,101):
    k = int(sqrt(j))
    flag = 1
    for i in range(2,k + 1):
        if j % i == 0:
            flag = 0
            break
    if (flag):
        print(j,end=' ')
sum = 0
i = 1
while i <= 5:
    sum += i
    i += 1
    if i == 3:
        break
    print('i={},sum={}'.format(i,sum))
i=2,sum=1
  • coutinue语句:当条件满足时候跳出后面的语句,执行循环剩余的周期,只停止了当前的一轮循环
  • 停止当前循环,重新进入循环
sum = 0
i = 1
while i <= 5:
    sum += i
    i += 1
    if i == 3:
        continue
    print('i={},sum={}'.format(i,sum))
i=2,sum=1
i=4,sum=6
i=5,sum=10
i=6,sum=15
  • while循环则判断循环条件是否满足
  • for循环判断迭代是否结束
  • 循环中的else:如果循环代码从break处终止,跳出循环,如果正常结束循环,则执行else中代码
  • enumerate()函数:内置函数返回枚举对象