python基础知识8---条件和循环
阅读目录
- 一.if语句
- 1.1 功能
- 1.2 语法
- 1.2.1:单分支,单重条件判断
- 1.2.2:单分支,多重条件判断
- 1.2.3:if+else
- 1.2.4:多分支if+elif+else
- 1.2.5:if语句小结
- 1.3 案例
- 1.4 三元表达式
- 二.while语句
- 2.1 功能
- 2.2 语法
- 2.2.1:基本语法
- 2.2.2:计数循环
- 2.2.3:无限循环
- 2.2.4:while与break,continue,else连用
- 2.2.5:while语句小结
- 2.3 案例
- 三.for语句
- 3.1 功能
- 3.2 语法
- 3.2.1:基本语法
- 3.2.2:遍历序列类型
- 3.2.3:遍历可迭代对象或迭代器
- 3.2.4:for基于range()实现计数循环
- 3.2.5:for与break,continue,else
- 3.2.6:for语句小结
- 3.3 案例
- 四.练习
一.if语句
1.1 功能
计算机又被称作电脑,意指计算机可以像人脑一样,根据周围环境条件(即expession)的变化做出不同的反应(即执行代码)
if语句就是来控制计算机实现这一功能
1.2 语法
1.2.1:单分支,单重条件判断
if expression:
expr_true_suite
注释:expession为真执行代码expr_true_suite
1.2.2:单分支,多重条件判断
if not active or over_time >= 10:
print('Warning:service is dead')
warn_tag+=1
1.2.3:if+else
if expression:
expr_true_suite
else:
expr_false_suite
1.2.4:多分支if+elif+else
if expession1:
expr1_true_suite
elif expression2:
expr2_true_suite
elif expession3:
expr3_true_suite
else:
none_of_the_above_suite
1.2.5:if语句小结
- if 后表达式返回值为True则执行其子代码块,然后此if语句到此终结,否则进入下一分支判断,直到满足其中一个分支,执行后终结if
- expression可以引入运算符:not,and,or,is,is not
- 多重expression为加强可读性最好用括号包含
- if与else缩进级别一致表示是一对
- elif与else都是可选的
- 一个if判断最多只有一个else但是可以有多个elif
- else代表if判断的终结
- expession可以是返回值为布尔值的表达式(例x>1,x is not None)的形式,也可是单个标准对象(例 x=1;if x:print('ok'))
- 所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布 尔 True 或 False 值。空对象、值为零的任何数字或者 Null 对象 None 的布尔值都是 False。
下列对象的布尔值是 False
1.3 案例
#!/usr/bin/env python
#_*_coding:utf-8_*_ '''
提示输入用户名和密码 验证用户名和密码
如果错误,则输出用户名或密码错误
如果成功,则输出 欢迎,XXX!
''' import getpass name=input('用户名: ')
passwd=getpass.getpass('密码: ') if name == 'alex' and passwd == '':
print('土豪里边请')
else:
print('土鳖请走开') 用户登陆验证
用户登陆验证
#!/usr/bin/env python
#_*_coding:utf-8_*_ '''
根据用户输入内容打印其权限 alex --> 超级管理员
eric --> 普通管理员
tony,rain --> 业务主管
其他 --> 普通用户
'''
name = input('请输入用户名:') if name == "alex":
print("超级管理员")
elif name == "eric":
print("普通管理员")
elif name == "tony" or name == "rain":
print("业务主管")
else:
print("普通用户") 根据用户输入内存输出权限
根据用户输入内存输出权限
1.4 三元表达式
语法:
expr_true_suite if expession else expr_false_suite
案例一:
>>> active=1
>>> print('service is active') if active else print('service is inactive')
service is active
案例二:
>>> x=1
>>> y=2
>>> smaller=x if x < y else y
>>> smaller
1
二.while语句
2.1 功能
while循环的本质就是让计算机在满足某一条件的前提下去重复做同一件事情(即while循环为条件循环,包含:1.条件计数循环,2条件无限循环)
这一条件指:条件表达式
同一件事指:while循环体包含的代码块
重复的事情例如:从1加到10000,求1-10000内所有奇数,服务等待连接
2.2 语法
2.2.1:基本语法
while expression:
suite_to_repeat
注解:重复执行suite_to_repeat,直到expression不再为真
2.2.2:计数循环
count=0
while (count < 9):
print('the loop is %s' %count)
count+=1
tag=True
count=0
while tag:
if count == 9:
tag=False
print('the loop is %s' %count)
count+=1
2.2.4:while与break,continue,else连用
count=0
while (count < 9):
count+=1
if count == 3:
print('跳出本层循环,即彻底终结这一个/层while循环')
break
print('the loop is %s' %count) break跳出本层循环
break跳出本层循环
count=0
while (count < 9):
count+=1
if count == 3:
print('跳出本次循环,即这一次循环continue之后的代码不再执行,进入下一次循环')
continue
print('the loop is %s' %count) continue跳出本次循环
continue跳出本次循环
count=0
while (count < 9):
count+=1
if count == 3:
print('跳出本次循环,即这一次循环continue之后的代码不再执行,进入下一次循环')
continue
print('the loop is %s' %count)
else:
print('循环不被break打断,即正常结束,就会执行else后代码块') count=0
while (count < 9):
count+=1
if count == 3:
print('跳出本次循环,即这一次循环continue之后的代码不再执行,进入下一次循环')
break
print('the loop is %s' %count)
else:
print('循环被break打断,即非正常结束,就不会执行else后代码块') else在循环完成后执行,break会跳过else
else在循环完成后执行,break会跳过else
2.2.5:while语句小结
- 条件为真就重复执行代码,直到条件不再为真,而if是条件为真,只执行一次代码就结束了
- while有计数循环和无限循环两种,无限循环可以用于某一服务的主程序一直处于等待被连接的状态
- break代表跳出本层循环,continue代表跳出本次循环
- while循环在没有被break打断的情况下结束,会执行else后代码
2.3 案例
while True:
handle, indata = wait_for_client_connect()
outdata = process_request(indata)
ack_result_to_client(handle, outdata)
import getpass account_dict={'alex':'','eric':'','rain':''}
count = 0
while count < 3:
name=input('用户名: ').strip()
passwd=getpass.getpass('密码: ')
if name in account_dict:
real_pass=account_dict.get(name)
if passwd == real_pass:
print('登陆成功')
break
else:
print('密码输入错误')
count+=1
continue
else:
print('用户不存在')
count+=1
continue
else:
print('尝试次数达到3次,请稍后重试') 用户登陆验证
用户登陆验证
三.for语句
3.1 功能
for 循环提供了python中最强大的循环结构(for循环是一种迭代循环机制,而while循环是条件循环,迭代即重复相同的逻辑操作,每次操作都是基于上一次的结果,而进行的)
3.2 语法
3.2.1:基本语法
for iter_var in iterable:
suite_to_repeat
注解:每次循环, iter_var 迭代变量被设置为可迭代对象(序列, 迭代器, 或者是其他支持迭代的对 象)的当前元素, 提供给 suite_to_repeat 语句块使用.
3.2.2:遍历序列类型
name_list=['alex','eric','rain','xxx'] #通过序列项迭代
for i in name_list:
print(i) #通过序列索引迭代
for i in range(len(name_list)):
print('index is %s,name is %s' %(i,name_list[i])) #基于enumerate的项和索引
for i,name in enumerate(name_list,2):
print('index is %s,name is %s' %(i,name))
3.2.3:遍历可迭代对象或迭代器
迭代对象:就是一个具有next()方法的对象,obj.next()每执行一次,返回一行内容所有内容迭代完后,
迭代器引发一 个 StopIteration 异常告诉程序循环结束. for 语句在内部调用 next() 并捕获异常.
for循环遍历迭代器或可迭代对象与遍历序列的方法并无二致,只是在内部做了调用迭代器next(),并捕获异常,终止循环的操作
很多时候你根本无法区分for循环的是序列对象还是迭代器
>>> f=open('a.txt','r') for i in f:
print(i.strip())
hello
everyone
sb
3.2.4:for基于range()实现计数循环
range()语法:
range(start,end,step=1):顾头不顾尾
- range(10):默认step=1,start=0,生成可迭代对象,包含[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- range(1,10):指定start=1,end=10,默认step=1,生成可迭代对象,包含[1, 2, 3, 4, 5, 6, 7, 8, 9]
- range(1,10,2):指定start=1,end=10,step=2,生成可迭代对象,包含[1, 3, 5, 7, 9]
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in range(10):
print(i)
1
3
5
7
9
注:for基于range()实现计数循环,range()生成可迭代对象,说明for循环本质还是一种迭代循环
3.2.5:for与break,continue,else
同while
3.2.6:for语句小结
- for循环为迭代循环
- 可遍历序列成员(字符串,列表,元组)
- 可遍历任何可迭代对象(字典,文件等)
- 可以用在列表解析和生成器表达式中
- break,continue,else在for中用法与while中一致
3.3 案例
albums = ('Poe', 'Gaudi', 'Freud', 'Poe2')
years = (1976, 1987, 1990, 2003) #sorted:排序
for album in sorted(albums):
print(album) #reversed:翻转
for album in reversed(albums):
print(album) #enumerate:返回项和
for i in enumerate(albums):
print(i)
#zip:组合
for i in zip(albums,years):
print(i)
四.练习
一、元素分类 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66的所有值, 'k2': 小于66的所有值} 二、查找
查找列表中元素,移除每个元素的空格,并查找以 a或A开头 并且以 c 结尾的所有元素。
li = ["alec", " aric", "Alex", "Tony", "rain"]
tu = ("alec", " aric", "Alex", "Tony", "rain")
dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"} 三、输出商品列表,用户输入序号,显示用户选中的商品
商品 li = ["手机", "电脑", '鼠标垫', '游艇'] 四、购物车
功能要求: 要求用户输入总资产,例如:2000
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
附加:可充值、某商品移除购物车
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
]
五、用户交互,显示省市县三级联动的选择 dic = {
"河北": {
"石家庄": ["鹿泉", "藁城", "元氏"],
"邯郸": ["永年", "涉县", "磁县"],
}
"河南": {
...
}
"山西": {
...
} }
python基础知识8---条件和循环的更多相关文章
- python基础知识input到while循环
j周笔记 输入与输出 1.输入 input ('请输入内容')= 字符串 2.输出 print(输出到控制台) 变量vairable 变量就是相当于我们人的名字 1.名字 ...
- 2015/9/5 Python基础(9):条件和循环
条件语句Python中的if语句如下: if expression: expr_true_suite 其中expression可以用布尔操作符and, or 和 not实现多重判断条件.如果一个复合语 ...
- Python基础:06条件和循环
1:条件表达式(三元操作符) Python 在很长的一段时间里没有条件表达式(C ? X : Y), 或称三元运算符.人们试着用 and 和 or 来模拟它, 但大多都是错误的. 根据 FAQ , 正 ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- python 基础知识(一)
python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...
- python基础知识小结-运维笔记
接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...
- Python 基础知识(一)
1.Python简介 1.1.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时 ...
- python基础知识(二)
python基础知识(二) 字符串格式化 格式: % 类型 ---- > ' %类型 ' %(数据) %s 字符串 print(' %s is boy'%('tom')) ----> ...
- Python基础知识总结笔记(四)函数
Python基础知识总结笔记(四)函数python中的函数函数中的参数变量作用域偏函数PFA递归函数高阶函数BIFs中的高阶函数匿名函数lambda闭包Closure装饰器Decorator函数式编程 ...
随机推荐
- .NET并行计算和并发:Task
任务不是线程. 任务运行的时候需要使用线程,任务并没有取代线程.
- python3学习笔记及常见问题
1,mac自带的python是2.7版本,我们需要按照python3,这样在terminal下可以直接使用,但是编译打包的时候会默认使用python2.7 解决办法:安装virtualenv,一个管理 ...
- UI规范案例-宝龙广场
- SQA
SQA 一.SQA过程 首先组成一个团队,遵循敏捷开发的原则,进行分工合作,为软件开发编造一个用例故事,画出相应的图,小组讨论合作后写代码,软件质量保证(SQA-Software Quality As ...
- 非对称加密, 助记词, PIN, WIF
一钱包 1.1非对称加密, 助记词, PIN, WIF, 地址 1.1.1 非对称加密算法 非对称加密算法, 加密与解密使用不同的KEY, 我们分别称为私钥与公钥,其中可以通过私钥生成公钥 在比特币中 ...
- HTML标记语言
一.html的文档结构 html含义为超文本标记语言,html文档重要由4个标签来组成就是<html> <head> <title> <body> ...
- Android应用程序启动过程
有没有想过,当我们点击桌面应用程序图标是怎样打开APP启动应用程序的呢? 当我们点击应用图标会调用Launcher的startActivitySafely()方法,方法实现如下,其实是调用的start ...
- 首次使用AndroidStudio创建hello world遇到的坑!(Mac系统下)
第一次用AS,且不说它SDK配置的琐碎,光建立第一个简单的HelloWorld项目的配置包问题就把我卡了一天.这个坑必须记录一下,
- git版本管理工具常用命令
git是分布式版本管理工具,一台电脑既可以是客户端,也可以是服务端.工作过程中可以断开网络.svn是集中式版本管理工具,一台服务器控制很多客户端,使用过程不能断网. git的优点有:适合分布式开发,强 ...
- yaf twig配置
1.安装 TWIG composer require twig/twig2.COMPOSER自动加载的引用修改 BOOTSTRAP.PHP 增加 public function _initAutolo ...