zoukankan      html  css  js  c++  java
  • Python用户交互与流程控制

    1. 用户交互

      python3通过input实现用户交互,与python2的raw_input一样,接收的值都转换成字符串格式。python2中也有一个input,而python2中的input接收的值不转换,保留原始数据类型,即输入什么就是什么,python3种已经去除。

    x = input("请输入:")
    print(type(x))
    #转换成整数
    x = int(input("请输入:"))
    print(type(x))

    #判断输入字符为数字的方法
    num = input("请输入号码:")
    if num.isdigit():
    num = int(num)
    print("num:",num,type(num))
    else:
    print("输入错误!")

    2. 条件判断语句

      条件语句是指根据条件表达式的不同计算结构,使流程流转至不同的代码块。

    if(条件):
        ...
    else:
        ...
    或
    if 条件:   #括号可以省略
        ...
    else:
        ...
    或
    if 条件:
        ...
    elif 条件:
        ...
    else:
        ...
    

     

    score = float(input("input your score:"))
    if 90<= score <=100:
        print('A')
    elif 80 <= score <90:
        print("B")
    elif 60 <= score <80:
        print('C')
    elif 0 <=score <60:
        print('D')
    else:
        print("Error")
    

      

    3. switch语句的替代方案

      switch语句多用于编写多分支结构的程序,比if...elif...else...语句更清晰,代码可读性更高。但是python没有提供switch语句,可以通过字典实现switch语句的功能。

    from __future__ import division
    
    x = 5
    y = 2
    operator = '*'
    res = {
        "+":x+y,
        "-":x-y,
        "*":x*y,
        "/":x/y
    }
    print(res.get(operator))
    

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

    class switch(object):
        def __init__(self,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):
            if self.fall or not args:
                return True
            elif self.value in args:
                self.fall = True
                return True
            else:
                return False
    
    operator = "*"
    x = 5
    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('---')
    

      switch语句造成代码不易维护,使源文件臃肿。面向对象的设计中常常对switch语句进行重构,把switch语句分解成若干类。对于简单的switch分支流程可以使用字典来实现。使用字典更容易管理switch,而switch类回到了C、Java的老路上,而且写法更复杂,不值得推荐。

    4. 循环语句

      循环语句是指重复执行同一段代码,通常用于遍历集合或者累加计算。

    • while循环
    while(表达式):  #()可以省略
        ...
    else:
        ...
    

      当表达式为真时,依次执行while中的语句,知道循环表达式值为False。程序的流程转到else语句,其中else子句可以省略,表达式两边的括号也可以省略。

    n = 0;
    while n<=10:
        print(n)
        n+=1
    else:
        print("输出完毕!")
    

      

    • for循环

      for循环用于遍历一个集合,一次访问集合中的每个项目。

    for 变量 in 集合:
        ...
    else:
        ...
    

      每次循环从集合中取出一个值赋给变量。集合可以是元组、列表、字典等数据结构。最后一次循环结构执行else子句,else子句可以省略。

      for...in...循环通常与range()函数一起使用,range()返回一个列表。

    range()函数使用:

    for i in range(10): #默认从0开始每次加1直到这个10为止(不包含10)。
        print(i)
    
    for i in range(2,10,2): #默认从2开始,每次加2,直到10为止(不包含10)。
        print(i)
    
    '''
    range语法: range(stop) -> range object range(start, stop[, step]) -> range object '''

      

    5. break和continue语句

      break:跳出整个循环

      continue:跳出本次循环,继续下次循环

    #输出小于5的数
    for i in range(10):
        if i ==5:
            break
        print(i)  #0 1 2 3 4
    
    
    #输出偶数
    for j in range(10):
        if j%2 !=0:
            continue
        print(j)  #0 2 4 6 8
    

      

  • 相关阅读:
    1
    最大子串
    线段树
    mybatis分页插件
    springmvc下载文件
    获“领跑衫”感言
    finnal 评论 II
    用户使用报告
    事后诸葛亮会议 (尸体解剖)
    final阶段成员贡献分
  • 原文地址:https://www.cnblogs.com/jmwm/p/9657510.html
Copyright © 2011-2022 走看看