流程控制(if while for)
if判断:模拟人一样对事物进行判断
格式:
if 条件: # 代码块的概念:(同一缩进级别的代码,例如下面的代码1、2、3是相同缩进的代码,这三个代码组合在一起就是一个代码块;相同缩进的代码自上而下的运行)
代码1 # 空四格
代码2 # 空四格
代码3 # 空四格
...
gender = "male" height = 180 weight = 140 salary = 15.5 if gender == "male" and height == 180 and weight > 120 and weight < 160 and salary > 12.5 : print("目标已找到")print("结束!")
映射到电脑上就是一堆变量,如上面的gender、height、weight、salary等
if...else
格式:
if条件:
代码1 # 空四格
代码2 # 空四格
代码3 # 空四格
...
else:
代码1 # 空四格
代码2 # 空四格
代码3 # 空四格
...
height = 180 weight = 140 look = "handsome" if height == 180 and weight == 140 and look =="handsome": print("终于找到你了!") else : print("you are 路人,快走开!") print("结束!")
if... elif... else
格式:
if条件:
代码1 # 空四格
代码2 # 空四格
代码3 # 空四格
...
elif:
代码1 # 空四格
代码2 # 空四格
代码3 # 空四格
...
else:
代码1 # 空四格
代码2 # 空四格
代码3 # 空四格
...
height = 180 weight = 165 salary = 7.8 if height > 175 and weight > 135 and weight < 145 and salary > 15: print("你就是我命中注定的人") elif height > 175 and weight > 135 and weight < 145 and salary <15: print("或许我们可以试着交往一下") elif height > 175 and weight < 120 and salary <10: pint("我觉得你还不错,但是我们不合适") else: print("癞蛤蟆想吃天鹅肉,一边去") print("交流结束")
先执行if条件,成立则print;若if条件不成立,则到下一步elif,以此类推
练习题:
""" 如果 成绩>=90,打印"优秀" 如果 成绩>=80 并且 成绩<90,打印"良好" 如果 成绩>=70 并且 成绩<80,打印"普通" 其他情况:打印"差" """ score = input("please input your score:") score = int(score) # 注意类型转换 if score >= 90 : print("优秀") elif score >= 80: print("良好") elif score >=70: print("普通") else: print("差")
if嵌套:
height = 180 weight = 145 look = "handsome" salary = 15 if height >175 and weight <160 and look =="handsome": print("你年薪多少?") if salary > 14 : print("你就是我的白马王子!") else : print("我觉得你不是我的骑士,很抱歉!")
while循环
实际生活中类似于重复的做一些事情,流水线上的工人反复劳动,直到下班时间到来
格式:
while条件:
代码1 # 空四格
代码2 # 空四格
代码3 # 空四格
... # while中要避免死循环
# 举例,实现QQ登录 user_db_name = 846719542 pass_db_word = 123456
user_db_name = str(user_db_name) # 定义为字符串类型才能比较pass_db_word = str(pass_db_word) # 定义为字符串类型才能比较
while True: input_user = input("username") input_pass = input("password") if input_user == user_db_name and input_pass == pass_db_word: print("登陆成功") else : print("密码错误,请重试")
在此暴露出一个问题:用户输错了要重新输入,但是输对了还需要输入,这就需要改进
while+break******(break意思是终止当前层的循环,执行其他代码;也就是最近的一个while)
user_db_name = 846719542 pass_db_word = 123456 user_db_name = str(user_db_name) # 定义为字符串类型才能比较 pass_db_word = str(pass_db_word) # 定义为字符串类型才能比较 while True: input_user = input("username") input_pass = input("password") if input_user == user_db_name and input_pass == pass_db_word: print("登陆成功") break else : print("密码错误,请重试")
while+continue******(continue的意思是终止本次循环,开始下一次循环)
# 打印1-10 n = 1 while n < 10 : print(n) n += 1 # 既保证了每次值+1,又保证了不会陷入死循环,因为n+1<10就会结束循环
# 打印1-10,5除外 n = 1 while n <10 : if n == 5 : n += 1 continue print(n) n += 1
注:continue不加在最后一行,因为加在最后没有意义。
while嵌套循环:
user_db_name = "英雄好汉" pass_db_word = "123456" while True : username = input("please input your ID:") password = input("please input your password:") if username == "user_db_name" and password = = "pass_db_word" print("欢迎勇士的到来") while True: order = input("please input your command:") if order == "退出" break print(%s is running...) else: print("账号或密码错误,请重试") print("欢迎下次再来,谢谢!")
for循环*******(不依赖于索引值)
语法结构:
for 变量名 in 容器类型:
代码1
代码2
代码3
# for循环应用在列表中 y = [1,2,3,4] for i in y : print(i)
# for循环应用在字典中y = {"height":180,"weight":145,"hobby":"sleep"} for i in y : print(i)
由以上分别在列表及字典里面的结果可以看出,for循环仅仅是将容器里面的元素取出来;(在字典里面取出来的是key,值是不会暴露给用户的)
***len() # 获取数据类型(容器类型)的个数,字符串是特例, 获取的是字符串中字符的个数。
for+break****(break用来主动结束for循环):
name_list = ["赵","钱","孙","李"] for name in name_list : if name == "孙" : break print(name)
可以看到,在循环到“孙”时候结束了for循环。
for+continue***(continue表示跳出本循环,开始下一次循环):
name_list = ["赵","钱","孙","李"] for name in name_list : if name == "孙" : continue print(name)
由结果可以看到,在循环到“孙”的时候,此次循环结束,不打印出结果,并开始下一次循环至结束。
for循环的嵌套:
for i in range(1,10) : for o in range(1,i+1) : # 内层循环的条件是由外层循环决定的 print("%s*%s=%s%"(i,o,i*o),end=" ") print()
注:不懂,还需要下来再看。
range在python2及python3中的区别:
在python2中,有range及xrange;其中xrange与python3中range功能一样,相当于迭代器(老母猪),都是用户需要用到多少取多少,而python2中的range则是把范围内所有的值都取出来。
注:range顾头不顾尾,比如range[1,10],结果只会出来1-9,10并不包括在内。
原文地址:https://www.cnblogs.com/pupy/p/11121852.html