Python中流程控制语句主要有三种if-else,while,for
1. if-else语句用于控制程序执行
1.1 基本形式:
if 判断条件: 执行语句 else: 执行语句
1.2 if 语句判断条件可以用>,<,==,>=,<=来判断其关系
当判断条件为多个值时,可以采用以下语句:
if 判断条件1: 执行语句1 elif 判断条件2: 执行语句2... elif 判断条件3: 执行语句3... else: 执行语句4...
#判读输入课程名字是否是Financial,如果是就输出欢迎学习Financial,如果不是就输出oops course = 'Financial' if course == 'Financial': # 判断变量是否为 Financial print ('Welcome to study Financial course!') # 并输出欢迎信息 else: print ('oops!') # 条件不成立时输出其他信息
Welcome to study Financial course!
#查询一个日期,688698股票的收盘价,如果是交易日就输出收盘价,如果日期不存在,就输出非交易日 SH688698 = { '1月4日': 18.5, '1月5日': 18.61, '1月6日': 19.24, } price_date = '1月4日' if price_date in SH688698.keys(): #判断变量是否在字典里 print(price_date,SH688698[price_date]) #在的话输出变量日期以及对应的收盘价 else: print('非交易日')
1月4日 18.5
#多条件if-else实现猜发行总数(万股)数字游戏 print ('猜猜通源环境发行总数(万股):') num =int(input()) #iinput()Python中控制输入语句,读入字符串,由于要猜数字,所以转化成int类型 if num == 3292: # 判断num的值 print ('bingo') elif num >3292: # 值大于3292时提示 print ('Sorry, change a small one') elif num < 3292: # 值小于3292时提示 print ('Sorry,change a big one') else: print ('wrong input') # 条件均不成立时输出
猜猜通源环境发行总数(万股): 3292 bingo
num =int(input()) # 输入行业市盈率并判断行业市盈率是否在0~10或者80~100之间 if (num >= 0 and num <= 10) or (num >= 80 and num <= 100): print ('Yes') else: print ('No')
3 Yes
2. while 语句
2.1 基本形式:
while 判断条件: 执行语句…
while中判断条件可以是任何表达式,任何非零、或非空(null)的值均为true
执行语句可以是单个语句或语句块
#用while语句控制打印1-10的数字 a=1 while a<=10: print(a) a+=1
1 2 3 4 5 6 7 8 9 10
2.2 break和continue的用法:
- break 用于退出循环,一旦遇到break就直接退出循环
- continue 用于跳过该次循环,继续执行接下来的语句
a = 1 while a < 13: a += 1 if a%2 == 0: # 双数时跳过输出 continue print(a) # 输出单数3,5,7,9
3 5 7 9 11 13
2.3 "判断条件"是个常值
判断条件"是个常值(0除外)的用法:表示循环必定成立
a = 1 while 1: # 当循环条件为常数时必定成立(0除外) print(a) # 输出1~10 a += 1 if a > 10: # 当i大于10时跳出循环 break
1 2 3 4 5 6 7 8 9 10
3. for 语句
在Python中,for语句用的非常频繁,同时for语句变式也很多,需要重点进行实践, for循环可以遍历任何序列的项目,如一个列表或者一个字符串
3.1 基本形式:
for iterating_var in sequence: print(iterating_var)
# 遍历一个 2020-12-01 - 2020-12-04 贵州茅台 (sh.600519)的开盘价 列表 l=[1726.00 ,1746.00, 1738.01 ,1752.00] for i in l: print(i) #当你有一个股票列表,要以此获取列表中的每一个开盘价时就可以如上操作啦
1726.0 1746.0 1738.01 1752.0
#遍历一个字符串 s='sh.600519' for i in s: print(i)
s h . 6 0 0 5 1 9
#通过序列索引迭代 s = ['Financial', 'data', 'analysis'] for i in range(len(s)): print(s[i])
Financial data analysis
3.2 拓展知识:用for循环构建list
#构建一个0-50的数组 list1=[x for x in range(50)] print('list1:') print(list1) #筛选0-50的偶数部分 list2=[x for x in range(50) if x%2==0] print('list2:') print(list2)
list1: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49] list2: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48]
Task
2019年1月2日至1月18日,沪深300指数每日的涨跌幅如下:-1.37%、-0.16%、2.4%、0.61%、-0.22%、1.01%、-0.19%、0.72%、-0.87%、1.96%、0.02%、-0.55%、1.82%。对此,分别完成以下若干个编程任务
HS300 = { '1月2日': -1.37, '1月3日': -0.16, '1月4日': 2.4, '1月5日': 0.61, '1月6日': -0.22, '1月7日': 1.01, '1月8日': -0.19, '1月9日': 0.72, '1月10日': -0.87, '1月11日': 1.96, '1月12日': 0.02, '1月13日': 0.55, '1月14日': 1.82, }
1. 在依次访问以上涨跌幅数据时,一旦访问到涨幅大于2%时,就终止这个程序,并输出已访问的数据。
# 方法一 for index in HS300: if HS300[index]>2: print("HS300 %s 涨幅为 %f"%(index, HS300[index])) break
HS300 1月4日 涨幅为 2.400000
# 方法二 for index, item in HS300.items(): if item>2: print("HS300 %s 涨幅为 %f"%(index, item)) break
HS300 1月4日 涨幅为 2.400000
2. 在依次访问以上涨跌幅数据时,一旦访问到涨跌幅为负数时,就跳过这些负数数据,并且输出全部非负数的数据。
# 方法一 for index in HS300: if HS300[index]>0: print("HS300 %s 涨幅为 %f"%(index, HS300[index])) else: pass
HS300 1月4日 涨幅为 2.400000 HS300 1月5日 涨幅为 0.610000 HS300 1月7日 涨幅为 1.010000 HS300 1月9日 涨幅为 0.720000 HS300 1月11日 涨幅为 1.960000 HS300 1月12日 涨幅为 0.020000 HS300 1月13日 涨幅为 0.550000 HS300 1月14日 涨幅为 1.820000
# 方法二 for index, item in HS300.items(): if item>0: print("HS300 %s 涨幅为 %f"%(index, item)) else: pass
HS300 1月4日 涨幅为 2.400000 HS300 1月5日 涨幅为 0.610000 HS300 1月7日 涨幅为 1.010000 HS300 1月9日 涨幅为 0.720000 HS300 1月11日 涨幅为 1.960000 HS300 1月12日 涨幅为 0.020000 HS300 1月13日 涨幅为 0.550000 HS300 1月14日 涨幅为 1.820000
3. 在依次访问以上涨跌幅数据时,按照以下3类标准:a.涨幅超过1%;b.跌幅超过1%;c.涨跌幅处于-1%~1%之间,找出相应的数据并以数列方式输出。
# 方法一 hs1={} hs2={} hs3={} print('a.涨幅超过1%;b.跌幅超过1%;c.涨跌幅处于-1%~1%') print(50*'*') for index in HS300: if HS300[index]>1: hs1[index]=HS300[index] elif HS300[index]<-1: hs2[index]=HS300[index] else: hs3[index]=HS300[index] print('a.涨幅超过1%:') print(hs1) print(50*'*') print('b.跌幅超过1%:') print(hs2) print(50*'*') print('c.涨跌幅处于-1%~1%:') print(hs3)
a.涨幅超过1%;b.跌幅超过1%;c.涨跌幅处于-1%~1% ************************************************** a.涨幅超过1%: {'1月4日': 2.4, '1月7日': 1.01, '1月11日': 1.96, '1月14日': 1.82} ************************************************** b.跌幅超过1%: {'1月2日': -1.37} ************************************************** c.涨跌幅处于-1%~1%: {'1月3日': -0.16, '1月5日': 0.61, '1月6日': -0.22, '1月8日': -0.19, '1月9日': 0.72, '1月10日': -0.87, '1月12日': 0.02, '1月13日': 0.55}
# 方法二 hs1={} hs2={} hs3={} print('a.涨幅超过1%;b.跌幅超过1%;c.涨跌幅处于-1%~1%') print(50*'*') for index, item in HS300.items(): if item>1: hs1[index]=item elif item<-1: hs2[index]=item else: hs3[index]=item print('a.涨幅超过1%:') print(hs1) print(50*'*') print('b.跌幅超过1%:') print(hs2) print(50*'*') print('c.涨跌幅处于-1%~1%:') print(hs3)
a.涨幅超过1%;b.跌幅超过1%;c.涨跌幅处于-1%~1% ************************************************** a.涨幅超过1%: {'1月4日': 2.4, '1月7日': 1.01, '1月11日': 1.96, '1月14日': 1.82} ************************************************** b.跌幅超过1%: {'1月2日': -1.37} ************************************************** c.涨跌幅处于-1%~1%: {'1月3日': -0.16, '1月5日': 0.61, '1月6日': -0.22, '1月8日': -0.19, '1月9日': 0.72, '1月10日': -0.87, '1月12日': 0.02, '1月13日': 0.55}
END