zoukankan      html  css  js  c++  java
  • Python流程控制

    六,输入输出

    输入

    还记得shell里的read吗

    [root@node1 python]# cat shell_read.sh 
    #!/bin/bash
    read -p "input your name:" name
    read -p "input your age:" age
    
    echo "$name,you are $age old years"
    

     用python3中可以使用input()函数等待用户的输入(python2中为raw_input()函数)

    示例

    name = input("what is your name:")
    age = input("what is your age: ")
    
    print(name, "你"+age+"岁了")
    

     注意:input输入都认为是str类型

    输出

    输出用print()

    示例

    print("=" * 10)
    print("1-系统")
    print("2-数据库")
    print("3-quit")
    print("=" * 10)
    

     输出

    ==========
    1-系统
    2-数据库
    3-quit
    ==========
    

     格式化输出

    还记得awk里的printf吗? (学过C基础的也肯定知道printf)

    python里不用printf,但也可以用 % 表示格式化操作符

    操作符 说明
    %S 字符串
    %d 整数
    %f 浮点数
    %% 输出%

    示例

    name = input("请输入你的名字:")
    age = input("请输入你的年龄:")
    age = int(age)
    print("%s,你%d岁了" % (name,age) )
    

     下面是一种新的格式化输出的写法,不用纠结是写%是还是%d,至对应好顺序就行(0代表第一个,1代表第二个)

    name = input("请输入你的名字:")
    age = input("请输入你的年龄:")
    age = int(age)
    print("%s,你%d岁了" % (name,age) )
    print("{},你{}岁了".format(name,age))
    

     默认{}内是按照顺序的,也可以手动指定顺序例如

    name = input("请输入你的名字:")
    age = input("请输入你的年龄:")
    age = int(age)
    print("%s,你%d岁了" % (name,age) )
    print("{},你{}岁了".format(name,age))
    print("{1},你{0}岁了".format(name,age))
    

     输出

    请输入你的名字:liuym
    请输入你的年龄:18
    liuym,你18岁了
    liuym,你18岁了
    18,你liuym岁了
    

     练习题

    键盘输入一些信息然后输出

    name = input("请输入你的名字:")
    sex = input("请输入你的性别:")
    job = input("请输入你的工作:")
    phonenum = input("请输入你的电话:")
    
    info = '''
    ------------ information of {} -----------
    name: {}
    sex: {}
    job: {}
    phonenum: {}
    '''.format(name, name, sex, job, phonenum)
    print(info)
    

     七,运算符

    算数运算符

    算数运算符  描述 实例
    + 加法 1=2=3
    - 减法 5-1=4
    * 乘法 3*5=15
    / 除法 10/2=5有余数结果为浮点数
    // 整除 10//3=3
    ** 求幂 2**3=8
    % 取余 10%3=1

    赋值运算符

    赋值运算符 描述 实例
    = 简单的赋值运算符,下面全部为复合运算符 c=a+b
    += 加法赋值运算符 a+=b等同于a=a+b
    -= 减法赋值运算符 a-=b等同于a=a-b
    *= 乘法赋值运算符 a*=b等同于a=a*b
    /= 除法赋值运算符 a/=b等同于a=a/b
    //= 整除赋值运算符 a//=b等同于a=a//b
    **= 求幂赋值运算符 a**=b等同于a=a**b
    %= 取余赋值运算符 a%=b等同于a=a%b

    比较运算符

    比较运算符 描述 示例
    == 等于 print(1==1)返回True
    != 不等于 print(2!=1) 返回True
    <> 不等于同!= print(2<>1) 返回True
    < 小于 print(2>1) 返回True
    > 大于 print(2<1) 返回False
    >= 大于等于 print(2>=1) 返回True
    <= 小于等于 print(2<=1) 返回False

    逻辑运算符

    逻辑运算符 逻辑表达式 描述
    and x and y x与y都为True,则返回True;x与y任一个或两个都为False,则返回False
    or x or y x与y任一个条件为True,则返回True
    not not x x为True,返回False; x为False,返回True

    成员运算符

    在后面讲解和使用序列(str,list,tuple) 时,还会用到以下的运算符。

    成员运算符 描述
    in x 在 y 序列中 , 如果 x 在 y 序列中返回 True; 反之,返回False
    not in x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True; 反之,返回False

    身份运算符

    身份运算符 描述 实例
    is is 是判断两个标识符是不是引用自一个对象 x is y, 类似id(x) == id(y) , 如果是同一个对象则返回 True,否则返回 False
    is not is not 是判断两个标识符是不是引用自不同对象 x is not y ,类似id(a) != id(b)。如果不是同一个对象则返回结果 True,否则返回 False。

    is 与 == 区别:

    is 用于判断两个变量引用对象是否为同一个(同一个内存空间), == 用于判断引用变量的值是否相等。

    a = [1, 2, 3]
    b = a[:]
    c = a
    print(a, id(a))
    print(b, id(b))
    print(c, id(c))
    print(b is a)
    print(b == a)
    print(c is a)
    print(c == a)
    

     输出

    [1, 2, 3] 2849709901960
    [1, 2, 3] 2849709923400
    [1, 2, 3] 2849709901960
    False
    True
    True
    True
    

     a与c在同一个内存空间 b只是等于a 但是与a不在同一个内存空间

    位运算符

    这里的python位运算符也是用于操作二进制的。

    位运算符 说明
    & 对应二进制位两个都为1,结果为1
    | 对应二进制位两个有一个1, 结果为1, 两个都为0才为0
    ^ 对应二进制位两个不一样才为1,否则为0
    >> 去除二进制位最右边的位,正数上面补0, 负数上面补1
    << 去除二进制位最左边的位,右边补0
    ~ 二进制位,原为1的变成0, 原为0变成1

    运算符的优先级

    常用的运算符中: 算术> 比较> 逻辑> 赋值

    示例:请问下面的结果是什么?

    result = 3 - 4 >= 0 and 4*(6-2) > 15
    print(result)
    

     结果是false

    算数优先级最高优先计算3 - 4 = -1 4*(6-2)=16

    再计算比较-1 是小于等于0的 16是大于15的

    在计算逻辑  False and True结果为False

    最后赋值 使用结果为False

    八,判断语句

    shell里的判断语句格式

    if 条件;then
        执行动作一
    fi
    

     示例

    if [ 1 == 1 ];then echo 1;fi
    

     shell双分支判断语句

    if 条件;then
        执行动作一
    else 
        执行动作二
    fi
    

     示例

    if [ 1 == 2 ];then echo 1;else echo 2;fi
    

     shell多分支判断语句

    if 条件一;then
        执行动作一
    elif 条件二;then
        执行动作二
    elif 条件三;then
        执行动作三
    else
        执行动作四
    fi
    

     或者

    case 变量 in
        值一)
            动作一;;
        值二)
            动作二;;
        *)
            其他动作
    esac
    

     python里的判断语句格式

    python单分支判断语句

    if 条件:    #结束加:
        执行动作 #一定要缩进否则语法报错
                    #没有fi结束符,就是看缩进
    

     示例

    if 1 == 1:
        print("True")

     python多分支判断语句

    if 条件一:
        执行动作一
    elif 条件二:
        执行条件二
    elif 条件三:
        执行动作三
    else:
        执行动作四
    

    示例

    str1 = input("输入yes/no:")
    if str1 == "yes":
        print("True")
    elif str1 == "no":
        print("Flase")
    else:
        print("Error")
    

    示例:通过年龄判断对一个人的称呼

    男的大于18叫sir

    男的小于18叫boy

    女的大于18叫lady

    女的小于18叫girl

    name = input("请输入姓名:")
    sex = input("请输入性别man/women:")
    age = int(input("请输入年龄:"))
    if sex == "man":
        if age >= 18:
            print("hello {} sir".format(name))
        else:
            print("hello {} boy".format(name))
    elif sex == "women":
        if age >= 18:
            print("hello {} lady".format(name))
        else:
            print("hello girl".format(name))
    else:
        print("输入有误")

    if嵌套

     if嵌套也就是if里还有if,你可以无限嵌套下去,但层次不宜过多(嵌套层次过多的话程序逻辑很难读,也说明你的程序思路不太好,应该有很好的流程思路来实现)

    九,循环语句

    while循环

    while 条件:
        条件满足时候:执行动作一
        条件满足时候:执行动作二
        ......
     
     退出循环
    continue #跳出本次循环
    break #退出循环,执行循环外代码
    exit() #退出python程序,可以指定返回值
    

    打印1-10

    i = 1
    while i <= 100:
        print(i, end=" ")
        i += 1 
    

    示例

    计算1-100偶数之和

    1-100偶数之和.py

    i = 0
    j = 0
    while i <= 100:
        if i % 2 == 0:
            j = j + i
        i += 1
    print(j)
    

    猜数字

    import random
    num = random.randint(1, 100)
    while True:
        g_num = int(input("请输入你猜想的数字1-100"))
        if g_num > num:
            print("大了")
            continue
        elif g_num < num:
            print("小了")
            continue
        else:
            print("对了 {}".format(num))
            break
    

    for循环

    for循环遍历一个对象(比如数据序列,字符串,列表,元组等),根据遍历的个数来确定循环次数。

    for循环可以看作为定循环,while循环可以看作不定循环

    for循环的基本格式

    for 变量 in 数据:
    
      重复执行的代码
    

     示例

    #for循环一个元组
    for i in (1, 2, 3, 4, 5):
        print(i, end=" ")
    #循环range函数这里表示 1 2 3 4 5不包含6
    for i in range(1,6):
        print(i)
    #循环0 1 2 3 4 5不包含6
    for i in range(6):
        print(i)
    #循环奇数,步长为2
    for i in range(1, 100, 2):
        print(i)
    #循环从100-1 步长为-2即从100降序打印偶数
    for i in range(100, 1, -2):
        print(i) 

    示例

    使用for循环来实现1-100之间能被5和3同时整除的数字之和

    sum = 0
    for i in range(1,101):
        if i % 5 == 0 and i % 3 == 0:
            sum += i
    print(sum)  

    练习:改写猜数字游戏,最多5次,5次没有猜对就退出

    方法一:使用while

    import random
    Num = random.randint(1, 100)
    j = 0
    while True:
        GuessNum = int(input("请输入你猜想的数字1-100"))
        if GuessNum > Num and j < 5:
            j += 1
            print("大了,已经猜{}次了".format(j))
            continue
        elif GuessNum < Num and j < 5:
            j += 1
            print("小了,已经猜{}次了".format(j))
            continue
        elif GuessNum == Num and j < 5:
            j += 1
            print("对了数字是{}你猜了{}次".format(GuessNum, j))
            break
        elif j >= 5:
            print("次数用完了数字是{}".format(Num))
            break
    

    方法二:使用for循环

    import random
    Num = random.randint(1, 100)
    for i in range(1, 6):
        GuessNum = int(input("请输入你猜想的数字1-100"))
        if GuessNum > Num:
            print("大了,已经猜{}次了".format(i))
        elif GuessNum < Num:
            print("小了,已经猜{}次了".format(i))
        else:
            print("对了,一共猜了{}次数字是{}".format(i, Num))
            break
        if i == 5:
            print("五次机会用完了")
            exit()
    

      

  • 相关阅读:
    开始学习
    C# Excel批注“哪种开发语言最好”
    [LeetCode] Longest Substring Without Repeating Characters
    (Android 即时通讯) [悬赏],不管是谁发现一个漏洞奖励人民币1000元!
    10进制转16进制
    【2】按照Django官网,创建一个web app 创建app/创建相应的数据库表
    HTML5新特性之WebSocket
    Drupal 7模板(主题钩子)的建议
    检測磁盘驱动的健康程度SMART
    BZOJ2527: [Poi2011]Meteors
  • 原文地址:https://www.cnblogs.com/minseo/p/13807245.html
Copyright © 2011-2022 走看看