设为首页 收藏本站
查看: 601|回复: 0

[经验分享] Python-if语句 [原]

[复制链接]

尚未签到

发表于 2017-4-27 10:51:58 | 显示全部楼层 |阅读模式
条件语句

1)      if 语句

例子:

# 执行if语句内的程序

a = input("a:")

b = input("b:")

if(a > b):

print a, " > ", b

Note:如果是在pydev+eclipse下,运行然后输入数字,打个回车就会出现“SyntaxError:unexpected EOF while parsing”,所以只能用raw_input来代替。原因是回车,编译器都多读一个/r,一般按回车后,shells 会输入“/n”,但因为Eclipse控制台输入的是“/r/n”,python就不能很好的识别,可以说这是Python的一个bug。



# 跳过if语句

a = input("a:")

b = input("b:")

if(a > b):

    print a, " > ", b

print a, " < ", b



# if else语句

a = input("a:")

b = input("b:")

if(a > b):

    print a, " > ", b

else:

print a, " < ", b

Note:input()he raw_input. Raw_input( )捕获用户的原始输入,raw_input()函数的声明如下所示:

Raw_input([prompt])->string,参数prompt是控制台输出的提示文字,提示用户输入。返回值为字符串。如果输入的是数字,返回的还是字符串。

Input( )支持用户输入数字或表达式,不支持输入字符串。Input( )函数的声明如下所示:

Input([prompt])->value。

2)      if…elif…else语句

例子:

# if elif else语句

score = raw_input("score:")

score=int(score)

if(score >= 90) and (score <= 100):

    print "A"

elif(score >= 80) and (score < 90):

    print "B"

elif(score >= 60) and (score < 80):

    print "C"

else:

    print "D"

3)      if语句的嵌套

编写条件语句时,应该尽量避免使用嵌套语句。嵌套语句不便于阅读,而且可能会忽略一些可能性。

例子:

x = -1

y = 99

if(x >= 0):

    if(x > 0):          #嵌套的if语句

        y = 1

    else:

        y = 0

else:

    y = -1

print "y =", y

输出为y=-1

4)      实现switch语句的功能

Python并没有提供switch语句,Python可以通过字典实现switch语句的功能。

实现方法分两步。首先,定义一个字典。字典是由键值对组成的集合。其次,调用字典的get()获取相应的表达式。

例子:

from __future__ import division

x = 1

y = 2

operator = "/"

result = {

    "+" : x + y,

    "-" : x - y,

    "*" : x * y,

    "/" : x / y

}

print result.get(operator)         

输出为0.5

另一种使用switch分支语句的方案是创建一个switch类,处理程序的流程。

a)         创建一个switch类,该类继承自Python的祖先类object。调用构造函数init( )初始化需要匹配的字符串,并需要定义两个成员变量value和fall。Value用于存放需要匹配的字符串,fall用于记录是否匹配成功,初始值为false,标识匹配不成功。如果匹配成功,程序往后执行。

b)        定义一个match( )方法,该方法用于用于匹配case子句。这里需要考虑三种情况:首先是匹配成功的情况,其次是匹配失败的默认case子句,最后是case子句中没有使用break中断的情况。

c)         重写__iter__( )方法,定义该方法后才能使switch类用于循环语句中。__iter__( )调用match( )方法进行匹配。通过yield保留字,使函数可以在循环中迭代。此外,调用StopIteration异常中断循环。

d)        编写调用代码,在for…in…循环中使用switch类。

例子:

#!/usr/bin/python

# -*- coding: UTF-8 -*-



class switch(object):

    def __init__(self, value):      # 初始化需要匹配的值value

        self.value = value

        self.fall = False           # 如果匹配到的case语句中没有break,则fall为true。



    def __iter__(self):

        yield self.match            # 调用match方法 返回一个生成器

        raise StopIteration         # StopIteration 异常来判断for循环是否结束



    def match(self, *args):         # 模拟case子句的方法

        if self.fall or not args:   # 如果fall为true,则继续执行下面的case子句

                                    # 或case子句没有匹配项,则流转到默认分支。

            return True

        elif self.value in args:    # 匹配成功

            self.fall = True

            return True

        else:                       # 匹配失败

            return False



operator = "+"

x = 1

y = 2

for case in switch(operator):        # switch只能用于for in循环中

    if case('+'):

        print x + y

        break

    if case('-'):

        print x - y

        break

    if case('*'):

        print x * y

        break

    if case('/'):

        print x / y

        break

    if case():                      # 默认分支

        print ""

输出为3

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-369894-1-1.html 上篇帖子: Python 字符串 序列 下篇帖子: python学习杂记(三)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表