• python修炼之路——控制语句


    Python编程之print

    python2.x和python3.x的print函数区别:python3.x的print函数需要加括号(),python2.x可以不加。

    #-*- coding:utf-8 -*-
    
    print("hello world!")   #打印 hello world!

    print函数参数:

    print(parameter, end=’ ’, seq='	')      #default end = ‘
    ’, 分割符seq

    多行输出:'''...'''  或 """..."""

    msg = """
        name = "car"
        color = "red"
        type = "T"
    """
    print(msg)

    高亮输出

    格式:33[显示方式;前景色;背景色 内容      33[0m

    """
    说明:
    前景色            背景色           颜色
    ---------------------------------------
    30                40              黑色
    31                41              红色
    32                42              绿色
    33                43              黃色
    34                44              蓝色
    35                45              紫红色
    36                46              青蓝色
    37                47              白色
    显示方式           意义
    -------------------------
    0                终端默认设置
    1                高亮显示
    4                使用下划线
    5                闪烁
    7                反白显示
    8                不可见
     
    例子:
    33[1;31;40m    <!--1-高亮显示 31-前景色红色  40-背景色黑色-->
    33[0m          <!--采用终端默认设置,即取消颜色设置-->   
    """

    使用占位符输出

    使用占位符表示二进制、八进制、16进制:

    print('the length of %s is %d ( %x %o)' %('Hello Python', len("Hello Python"),len("Hello Python"),len("Hello Python")) )
    the length of Hello Python is 12 ( c 14)
    # %x ---hex                  %o---oct                         %d--- dec

    使用占位符浮点数、整数:

    import math
    print('PI  = %f (PI = %10.3f,PI = %-10.3f,PI = %06d)' %(math.pi,math.pi,math.pi,math.pi))
    PI  = 3.141593 (PI =      3.142,PI = 3.142     ,PI = 000003)
    #default( width = 10,precise = 3,align = left;align = rigth;width = 6 filled with 0)

    通用占位符: %r

    print('%r %r %r' % ('python',12,True))
    'python' 12 True
    #default( width = 10,precise = 3,align = left;align = rigth;width = 6 filled with 0)

    实例

    name = input("please input your name:")
    age  = input("please input your age:")
    job = input("please input your job:")
    salary = input("please input your salary:")
    info = '''
    ----------------info of %s -----------
    Name:%s
    Age:%s
    Job:%s
    Salary:%s
    ''' % (name,name,age,job,salary)
    print(info)

    使用format格式化输出

    format格式化应用:

    info2 = '''
    ----------------info of {_name} -----------
    Name:{_name}
    Age:{_age}
    Job:{_job}
    Salary:{_salary}
    '''.format(_name=name,
                _age=age,
               _job=job,
               _salary=salary)
    print(info2)
    
    info3 = '''
    ----------------info of {0} -----------
    Name:{0}
    Age:{1}
    Job:{2}
    Salary:{3}
    '''.format(name,age,job,salary)
    print(info3)

    • print()函数可以接受多个变量或常量;

    • 注释

      单行注释: # 被注释内容

      多行注释: """ 被注释内容 """ 或 ''' 被注释内容 '''

    • python中,单引号和双引号没区别,但是在引用是需要匹配,如 "I'm a student";

    • python中,字符串可以使用加号“+”,互联,如"ab" = "a"+"b"


    Python编程之变量

    变量:存储数据,用于调用数据。

    变量实际是内存对象的别名。

    申明变量:变量名 = 数据值   (无需申明数据类型,根据初始赋值的数据确定存储类型)

    变量定义规则:

    • 变量名只能是 字母、数字或下划线的任意组合

    • 变量名的第一个字符不能是数字

    • 以下关键字不能声明为变量名

      ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

    name = "car"
    name2 = name
    print("now: ",name,name2)           # now:  car car
    name = "bike"
    print("after change: ",name,name2)  # after change:  bike car
    
    #开始时,name2 通过 name 指向内存中的“car”,name = "bike" 只是将 name 重新指向内存中的"bike",但是name2的指向不变
    #name,name2赋值是对内存对象的引用,id(name),id(name2),id("car")是一样的,相当于name和name2的id等价于内存对象("car")的id。
    #name重新赋值后,id等价于"bike"的id,而name2的id不变,所以name2的值不会变。
    #想了解更多的赋值情况,请搜索python深浅拷贝

    Python编程之input

    python3.x中用户输入函数input(),相当于python2.x中的raw_input()函数。

    name = input("please input your name:" )

    input函数读取用户输入,默认为字符串形式,如果需要整型,则 int( input() ),强制转换为整型;

    type函数可以返回变量数据类型,如type(name)。


    Python编程之条件判断

    if语句的写法:先写if,然后是一个条件,然后是一个冒号,然后是一个语句块。如果条件为True,则语句块中的代码就会被执行;否则程序会前进到if语句后面的语句。

    代码缩进:冒号“ : ”后面表示同一代码块,可以按4个空格缩进,或按“ tab ”键缩进,注意空格和“ tab ” 不能混合使用,容易出现缩进错误。

    if 语句

    grade = input("请输入学生成绩:")
    grade = int(grade)
    if grade >= 90:
        print ("excellent")

    if ... else语句

    if ... else 条件判断语句,只有一个代码块会被执行。如果条件为真,则执行的是紧挨着条件的代码块;如果条件为假,则执行的是紧挨着else的代码块。

     三元运算:
    result = value1 if 条件 else value2
    # 如果条件为真,result = value1, 否则 result = value2
    

    else子句的用法:紧挨着if语句代码块的下面,写上else(注意缩进量和对应的if语句一致),然后是一个冒号,再然后是语句块。

    score = int(input('input score:
    '))
    if score >= 90:
        grade = 'A'
    else:
        grade = 'B'
    print ('%d belongs to %s' % (score,grade))

    if ... elif ... else...语句

    对条件判断可以使用elif子句。

    只要某个条件为真,就执行所对应的代码块,然后退出该语句。即不管有多少个条件为真,只有一个代码块会被执行,因为可能存在多个条件同时为真的情况。

    if...elif后面可以加else,也可以不加,但是建议使用else来捕获不可能的情况。

    #题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;
    #利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;
    #20万到40万之间时,高于20万元的部分,可提成5%;
    #40万到60万之间时高于40万元的部分,可提成3%;
    #60万到100万之间时,高于60万元的部分,可提成1.5%,
    #高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
    
    I = input('请输入当前利润I:')
    I = int(I)
    if I <= 10:
        print('奖金为:', I*0.1)
    elif I <= 20:
        print('奖金为:', (I-10)*0.075+1)
    elif I <= 40:
        print('奖金为:', (I-20)*0.05+1+0.75)
    elif I <= 60:
        print('奖金为:', (I-40)*0.03+1+0.75+2)
    elif I <= 100:
        print('奖金为:', (I-60)*0.015+1+0.75+2+0.6)
    else:
        print('奖金为:', (I-100)*0.01+1+0.75+2+0.6+0.6)

    Python编程之for循环

    for循环会一个元素一个元素地对序列进行遍历,字符串也是序列。

    创建for循环:首先是for,然后是一个用于存放各元素的变量,然后是in,然后是待遍历的序列,然后是一个冒号,最后是循环体

    实例

    #题目:一个整数,它加上100和加上268后都是一个完全平方数,请问该数是多少?
    import math
    for n in range(0,10000):
        x = int(math.sqrt(n+100))
        y = int(math.sqrt(n+268))
        if (x*x == n+100) and (y*y == n+268):
            print(n)

    实例

    #题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
    import string
    
    s = input('input string:')
    letters = 0
    space = 0
    digit = 0
    others = 0
    for c in s:
        if c.isalpha():
            letters += 1
        elif c.isspace():
            space += 1
        elif c.isdigit():
            digit += 1
        else:
            others += 1
    print ('char = %d,space = %d,digit = %d,others = %d'
           % (letters,space,digit,others))

    实例

    #闰年
    
    L = input("请输入年月日,例如20160902:")
    L = str(L)
    sum = 0
    year = int(L[:4])
    L1 = (0,31,59,90,120,151,181,212,243,273,304,334)
    for i in range(0,13):
        if int(L[4:6]) > i:
            sum = L1[i]
        else:
            sum = sum + int(L[6:8])
            break
    
    #sum = L1[int(L[4:6])-1] + int(L[6:8]) 
    
    if year % 400 ==0 or (year % 4 == 0 and year %100 != 0):
        print(sum+1)
    else:
        print(sum)

    实例

    #题目:输出9*9乘法口诀表。
    for i in range(1,10):
        for j in range(i,10):
            print('%d * %d = %d' %(i,j,i*j))
        print(' ')

    实例

    #题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
    
    for i in range(1,5):
        for j in range(1,5):
            for k in range(1,5):
                if i != j and i != k and j!=k:
                    print(i*100+j*10+k)

    跳出for循环时,可以加个else语句,正常跳出循环后执行else后面的代码块;即当循环判断条件不成立时,执行else后面的代码。break跳出不会触发执行else后面的代码。


    Python编程之while循环

    while条件在某个时候为真时,代码块执行,否则不执行。

    #计算等差数列1 4 7 10...前100项的和
    x = 1
    d = 3
    sum = 0
    n = 1
    while n < 101:
        sum = sum + x
        x = x + d
        n = n + 1
    print( sum )

    善用死循环,以及break,continue用法

    break: 跳出整个循环。

    continue: 跳出本次循环,进入下一个循环;即跳回循环的开头。

    跳出while循环时,可以加个else语句,正常跳出循环后执行else后面的代码块;即当循环判断条件不成立时,执行else后面的代码。break跳出不会触发执行else后面的代码。

    实例

    #分解质因数
    n = input("请输入数字:")
    n = int(n)
    print('{} = '.format(n))
    k = 2
    while True:
        if n % k == 0:
            n = n // k
            print('{} *'.format(k))
        else:
            k += 1
        if n == k:
             print('{} *'.format(k))
             break

    实例

    '''题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。
    例如6=1+2+3.编程找出1000以内的所有完数。
    '''
    n = int(input('please input number:'))
    m = n
    L = [1]
    k = 2
    while  True:
        if n % k == 0:
            n = n // k
            L.append(k)
        else:
            k = k+1
        if n == k:
            L.append(k)
            break
    print(L)
    if sum(L) == m:
        print('%d is perfest number' %m)
        print( '%d = ' %m, end = ' ')
        for i in range(0,len(L)-1):
            print('%d +' %L[i], end = ' ')
        print(L[len(L)-1])

    实例

    #-*-coding:utf-8 -*-
    
    mark_line = "---------------Welcome to login system--------------"
    print(mark_line)
    with open("menu.txt", "r", encoding="utf-8") as f_menu:  # 从文件读取菜单信息
        menu = f_menu.readlines()  # 以列表形式保存菜单信息
    back_menu = 1             #只用一个循环,使用back_menu来返回上一级目录
    while True:                        #进入菜单循环
        if back_menu == 1:                #判断正确,进入一级菜单
            print(menu[0],menu[1],menu[2])              #打印一级菜单信息
            select_menu = input("please input your selection:")    #选择一级菜单选项
            if select_menu == menu[1][0]:  # 匹配正确,设置菜单选项back_menu,进入二级菜单
                back_menu = 2
            elif select_menu == menu[2][0]:  # 一级菜单选项,判断正确,则进入退出判断选项
                check_exit = input("Do you want to exit? [y/yes or n/no]")  # 用户再次确认是否退出
                if check_exit == "y" or check_exit == "yes":  # 输入y or yes 退出系统
                    break
                elif check_exit == "n" or check_exit == "no":  # 输入n or no 不退出系统
                    back_menu = 1
                else:  # 判断是否退出一级菜单时,输入其他键(非y/yes/n/no)不做任何操作
                    print("your input invalid")
                    back_menu = 1
            else:  # 在一级菜单输入其他键(非1,2)不做任何操作
                print("your input invalid")
                back_menu = 1
        elif back_menu == 2:          #判断正确进入二级菜单
            print(menu[3],menu[4],menu[5])       #打印二级菜单信息
            select_menu2 = input("please input your select: ")    #选择二级菜单选项
            if select_menu2 == menu[4][0]:  # 匹配正确,设置菜单选项back_menu,进入三级菜单
                back_menu = 3
            elif select_menu2 == menu[5][0]: #匹配正确直接返回到一级菜单
                    back_menu = 1
            else:  # 在二级菜单输入其他键(非1,2)不做任何操作
                print("your input invalid")
                back_menu = 2
        elif back_menu == 3:        #判断正确进入三级菜单
            print(menu[6], menu[7],menu[8])    #打印三级菜单信息
            select_menu3 = input("please input your select: ")
            if select_menu3 == menu[7][0]:        #判断正确返回二级菜单
                back_menu = 2
            elif select_menu3 == menu[8][0]:   #判断正确,退出系统; 此设置只是填充三级菜单
                break       #任意键返回二级菜单
            else:
                print("your input invalid")
                back_menu = 3
    print("
    ")
    print("********test finished***********")
    print("退出成功")   #退出系统

  • 相关阅读:
    【代码沉淀】
    【整理总结】目录
    Windows service installer with InstallShield LE
    (The application/json Media Type for JavaScript Object Notation (JSON))RFC4627-JSON格式定义
    Microsoft .NET Framework 4 安装 1603错误的解决
    SQL SERVER 无法正常连接的那些事
    【整理总结】我的装机软件以及说明
    Wcf服务测试自带工具
    Postgresql 远程连接配置
    Caliburn.Micro
  • 原文地址:https://www.cnblogs.com/gareth-yu/p/7768950.html
Copyright © 2020-2023  润新知