前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >三、python基础之条件和循环

三、python基础之条件和循环

作者头像
py3study
发布2020-01-09 14:52:12
4890
发布2020-01-09 14:52:12
举报
文章被收录于专栏:python3

目录

一.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语句小结

一.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

三元表达式

语法:

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 

2.2.3:无限循环

count=0

while True:

    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 

while语句小结

条件为真就重复执行代码,直到条件不再为真,而if是条件为真,只执行一次代码就结束了

while有计数循环和无限循环两种,无限循环可以用于某一服务的主程序一直处于等待被连接的状态

break代表跳出本层循环,continue代表跳出本次循环

while循环在没有被break打断的情况下结束,会执行else后代码

2.3 案例

用户登陆验证

import getpass

account_dict={'alex':'123','eric':'456','rain':'789'}

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循环的是序列对象还是迭代器 

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]

注:for基于range()实现计数循环,range()生成可迭代对象,说明for循环本质还是一种迭代循环

3.2.5:for与break,continue,else

同while

3.2.6:for语句小结

for循环为迭代循环

可遍历序列成员(字符串,列表,元组)

可遍历任何可迭代对象(字典,文件等)

可以用在列表解析和生成器表达式中

break,continue,else在for中用法与while中一致

作业:用户登录验证

表结构:

CREATE TABLE `user_login` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `name` varchar(20) NOT NULL DEFAULT '',

  `pwd` varchar(20) NOT NULL DEFAULT '',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

代码:

#!/usr/bin/python

#-*- coding: utf-8 -*-

import MySQLdb

import sys

sys.path.insert(0,"/etc/dbbin")

from lib import configgetter

getter = configgetter.Configuration("conf/mysql.cfg")

suser = "mysqlha"

spasswd = getter.passget("mysql",suser)

def MysqlSelect(host,port,db,sql,charset="utf8"):

    try:

        conn = MySQLdb.connect(host=host,port=port,user=suser,passwd=spasswd,db=db)

        cursor = conn.cursor()

        charsql = "set names %s" %charset

        cursor.execute(charsql)

        cursor.execute(sql)

        result = cursor.fetchall()

        return result

    except Exception,ex:

        print "execute is faild : %s" %sql

        ex_info = str(ex)

        print ex_info

        return 2,ex_info

def UserLogin():

    errcode = 0

    while True:

        name = raw_input('Please input user name:').strip()

        pwd = raw_input('Please input user password: ').strip()

        namesql = "select name from user_login where name = '%s'" % name

        passwdsql = "select pwd from user_login where name = '%s'" % name

        name_group = MysqlSelect('10.20.8.1',3488,'tt',namesql)

        pwd_group = MysqlSelect('10.20.8.1',3488,'tt',passwdsql)

        print errcode

        if name_group != ():

            if name == name_group[0][0] and errcode == 3:

                print "%s   user has been locked  " % name

                continue

            if name == name_group[0][0]:

                if pwd == pwd_group[0][0]:

                    print "%s login sucess" % name

                    break

                else:

                    print "User password error,Please try again"

                    errcode += 1

        else:

             print " %s user not exists" % name

             break

UserLogin()

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档