条件判断与循环
条件控制
顺序执行
Python代码在执行过程中,遵循下面的基本原则:
- 普通语句,直接执行;
- 碰到函数,将函数体载入内存,并不直接执行
- 碰到类,执行类内部的普通语句,但是类的方法只载入,不执行
- 碰到if、for等控制语句,按相应控制流程执行
- 碰到@、break、continue等,按规定语法执行
- 碰到函数、方法调用等,转而执行函数内部代码,执行完毕继续执行原有顺序代码
其实顺序执行,简单来说就是代码按照从上到下的顺序来执行
# print('hello world') # 1
# def test(): # 2
# print('我是test')
# test()
class Demo(): # 3
print('Demo')
def test1(self):
print('Demo test1')
Demo()
条件判断
条件判断是通过一条或多条判断语句的执行结果(True或者False)来决定执行的代码块。
在Python语法中,使用if、elif和else三个关键字来进行条件判断。
条件判断使用原则
- 每个条件后面要使用冒号(:)作为判断行的结尾,表示接下来是满足条件(结果为True)后要执行的语句块。
- 除了if分支必须有,elif和else分支都可以根据情况省略。
- 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
- 顺序判断每一个分支,任何一个分支首先被命中并执行,则其后面的所有分支被忽略,直接跳过!
- 在Python中没有switch-case语句。
条件判断嵌套
# print('hello world') # 1
# def test(): # 2
# print('我是test')
# test()
# class Demo(): # 3
# print('Demo')
# def test1(self):
# print('Demo test1')
# Demo()
# ipt = input('超市有无鸡蛋:')
# if ipt == 'yes':
# print('买六个面包回来')
# else:
# print("别买了")
ipt = input("今天发工资了吗?Y/N")
if ipt.upper() == 'Y':
salary = input('请问工资多少')
debt = input("请问欠花呗多少?")
remain = float(salary) - float(debt)
if remain > 1000:
print('ye!发工资了')
else:
print("吃土吧!")
elif ipt.upper() == 'N':
print('喝风把!')
else:
print('亲,输入错误噢')
循环语句
while循环
while的else从句
while循环还可以增加一个else从句。当while循环正常执行完毕,会执行else语句。
注意else与while平级的缩进方式!
但如果是被break等机制强制提前终止的循环,不会执行else语句。
# # i = 1
# # while i <= 5:
# # print('hello amy')
# # i += 1 # i = i + 1 #计数器
# '''
# 求1~100之间的和
# '''
# n = 1
# num_sum = 0
# flag = False
# while n <= 100: # 1 # print(n)
# num_sum += n
# # print(n)
# n += 1
# if n == 8:
# n = 101
# # break # 退出循环
# # continue # 退出当前循环,进入下次循环
# print(n)
# else: # else是指条件为False的时候执行的语句
# print("执行完毕")
'''
*
**
***
****
...
'''
# row = 1
# while row <= 4:
# print('*'*row)
# row += 1
row = 1
while row <= 4:
starts = 1
while starts <= row:
print('*',end='')
starts += 1
print('')
row += 1
for循环
虽然与while一样都是循环的关键字,但for循环通常用来遍历可迭代的对象,如一个列表或者一个字典。
循环嵌套
eg:九九乘法表
'''
只要能用循环遍历的都是可迭代的对象
list() # 是否是可迭代(interable)的对象要看看是否有__iter__,有即是
str() dict()
# int() # 这不是可迭代对象
for i in iterable:
pass
1.可迭代的对象内部都有__iter__()
2.会调用iterable数据类型当中__iter__()将它转为迭代器
3.迭代器可调用__next__()方法取值,直到抛出StopIteration,结束迭代
'''
# for i in [1,2,3]:
# print(i)
lis = [1,2,3]
lis_iter = lis.__iter__()
try:
while True:
print(lis_iter.__next__())
except StopIteration:
pass
'''
range(start,stop,step) start默认为0,左闭右开,步长默认为1'''
for i in range(1,22,3):
print(i)
'''
程序:当我输入11-->壹拾壹元整
壹壹 ch_num[1]
'''
ch_num = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖','拾']
ch = ['园','拾','佰','仟','萬']
ipt = input('请输入多少钱:') # '12'-->'1' '2'
len_ipt = len(ipt) # 2
for i in ipt:
# print(i)
len_ipt -= 1
# nums = ch_num[int(i)]
# print(nums,end='')
# res = ch[len_ipt]
# print(res,end='')
print("{}{}".format(ch_num[int(i)],ch[len_ipt]),end='')
print('整')
'''九九乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
...
'''
flag = False
for i in range(1,10):
if flag:
break
for j in range(1,i+1):
# print(i,j)
if j == 3:
flag = True
break
print("{}*{}={}".format(j,i,i*j),end=' ')
print('')