• python语法基础


    1.注释

      1.1 单行注释

    # 这是注释内容
    print("hello world!")
    print("hello world!") # 在代码后也可以编写注释

      1.2 多行注释

    """
    代码完成的功能是,打印输出 hello world 
    1.首先调用 print 函数
    2.给 print 函数传入要打印输出的参数
    """
    print("hello world!")

      1.3 快捷键注释

    快捷键注释 ctrl + /

    2.变量

      2.1 变量定义语法

      变量在程序中表现为一个唯一不重复的名字,只需要定义一个名字,给这个名字变量赋值即可。

      注意:变量意味着存储的数据是可以变化的。

    # 定义一个变量,名字为val ,这个变量临时存储的值为100
    val = 100
    # 下面将这个变量的值,更改为其他的值 200
    val = 200

      注意:这里的等号(=),叫做赋值运算符,表示将 = 号后面的数据存储到名字为 = 号前面的名字变量里。

      在取变量名时,注意:

        1.标识符由字母、下划线和数字组成,且数字不能开头;

        2.python 中的标识符是区分大小写的;

        3.变量名一般用小写加下划线组成;

        4.不能和关键字和已有的名字冲突;

      2.2 变量的类型

        

        1) 数字类型:整数和小数

        2)字符串类型:除了数字类型的数据,处理更多的就是字符串类型数据;

          在python 程序里,无论任何字符写到两个单引号或者双引号内部,都称为 字符串。

        3) 布尔类型:用于表示逻辑运算结果,该变量只有两个值,True 或者 False.

        注意:python 中定义变量时 不需要指定类型,python 会根据变量的值来推导变量的类型,可以使用type()函数来查看变量的类型。

      

      2.3 不同类型之间的运算规则

        1)算术运算符

        +   -   *    /    : 加 减 乘 除

        //   取整数

        %  取余数

        **   幂

        2)复合赋值运算符

        = 赋值

        +=  加法赋值

        -=  减法赋值

        *=  乘法赋值

        /=  除法赋值

        //=  取整赋值

        %=  取模(余数)赋值

        **=  幂赋值

       注意:

        1.数字和数字之间可以进行所有的运算

        2.数字和字符串之间只能进行乘法运算

        3.字符串和字符串之间可以进行加法运算

      2.4 变量的输入和输出

        1.print 函数

          1)普通输出变量 

    # 定义一个整数类型变量
    my_number = 100
    # 定义一个字符串类型变量
    my_string = 'hello world!'
    
    # 输出两个变量
    print(my_number)
    print(my_string)

      注意:变量名不能加引号

          2)格式化输出变量

            格式化输出就是让数据按照一定的格式输出,例如:我的名字是xxx.

            进行格式化输出的流程:

              1.先定义输出格式.

              2.在格式中填充数据.

            案例:已知有数据:name = '司马二狗',age = 30,salary = 19988.78,请按照“我的名字是xxx,我的年龄是xxx,我的工资是xxx”的格式将变量输出。

            定义输出格式,需要用到格式化占位符,用来暂时替代不确定的值。

            %  被称为  格式化操作符,专门用于处理字符串中的格式

            1. 包含 % 的字符串,被称为 格式化字符串

            2. % 和不同的 字符 连用,不同类型的数据  需要使用 不同的格式化字符

            常用格式化字符:

              %s  字符串

              %d  有符号十进制整数,%06d  表示输出的整数显示位数,不足的地方使用 0 补全

              %f  浮点数, %.2f  表示小数点后只显示两位

              %%  输出%

    # 定义名字、年龄、工资变量
    name = '司马二狗'
    age = 30
    salary = 19988.78
    # 格式化字符串
    format_string = '我的名字是%s,我的年龄是%d,我的工资是%.2f' % (name,age,salary)
    # 输出格式化后的字符串
    print(format_string)

         2.input函数

          input函数主要用于从键盘获取数据。

          注意:无论输入的数据是小数、整数、还是字符串,input函数统统当做字符串类型来获取。

    # 获得键盘输入
    your_name = input('请输入您的名字:')
    # 输出内容
    print(your_name)

      2.5变量的类型转换

        变量类型转换就是将变量的类型,由一种类型转换为另一种类型。

        例如:将变量从数字类型转换为字符串类型

        由于各种原因,在拿到数据之后,数据的类型和我们预期的不符,导致无法进行相关的计算(数据类型决定了数据之间的运算规则),因此我们需要先将数据的类型转换为我们预期的类型,再进行计算。

        因为 input接受的任何数据都当做了 string 类型来处理。此时如果想要进行数值运算,就必须将字符串转换为数字类型,再进行计算,因为类型不同,运算规则不同。

        

        使用以下函数完成变量类型的转换:

          1.int(val) 将变量(val) 转换为 int 类型;

          2.float(val) 将变量 (val)转换为 float 类型;

          3.str(val) 将变量(val)转换为 str 类型;

    # 输入左操作数
    left_number = input('请输入一个数字:')
    # 输入右操作数
    right_number = input('请输入一个数字:')
    # 将字符串类型变量转换为数字类型
    left_number_int = int(left_number)
    right_number_int = int(right_number)
    # 对两个数进行加法计算
    result = left_number_int + right_number_int
    # 计算结果
    print(result)

    3.分支语句

      3.1 if 分支语句

        1)单个分支语法格式

    a = 10
    if a >  5 :
        print('a>5')

        

        2)两个分支语法格式

    name = 'Obama'
    if name == 'Obama':
        print('我是Obama')
    elif name =='Trump':
        print('我是Trump')
    name = 'Obama'
    if name == 'Obama':
        print('我是Obama')
    else:
        print('我是其他人!')

        3)多个分支语法格式

    day = input('请输入1-7的数字:')
    if day =='1':
        print('今天是星期一')
    elif day == '2':
        print('今天是星期二')
    elif day == '3':
        print('今天是星期三')
    elif day == '4':
        print('今天是星期四')
    elif day == '5':
        print('今天是星期五')
    elif day =='6':
        print('今天是星期六')
    elif day == '7':
        print('今天是星期日')
    else:
        print('无法确定星期几')

      3.2 if 条件成立

        1.运算符:== 、 != 、 > 、 < 、 >= 、 <=

    # 请输入你的用户名
    username = input('请输入您的用户名:')
    # 请输入您的密码
    password = input('请输入您的密码:')
    # 判断用户名是否正确
    if username =='admin':
    #     再判断密码是否合法
        if password == 'admin':
            # 打印欢迎信息
            print('欢迎 %s 登录系统!' % username)

        

        2.多个条件之间的关系

          运算符:and  、or 、not

    a = 10
    b = 20
    c = 30
    d = 40
    # and 两个条件都为真,则结果为真
    result = a > b and c < d
    print('result:', result)
    
    # or 有一个条件为真,则结果为真
    result = a > b or c < d
    print('result:', result)
    
    # not 如果条件为真,则结果就为假
    result = not(a > b )
    print('reslut:',result)

        3.猜拳游戏

    import random
    
    user_quan = int(input('请出拳 石头(0)、剪刀(1)、布(2):'))
    computer_quan = random.randint(0,2)
    if (user_quan == 0 and computer_quan ==1) or
            (user_quan == 1 and computer_quan == 2) or 
            (user_quan == 2 and computer_quan == 0):
        print('您赢了!')
    elif user_quan == computer_quan:
        print('平局!')
    else:
        print('您输了!')

     4.循环语句

      4.1 while 循环

        1.while循环的语法格式

          while 条件:

            重复执行的一行或多行代码

        

        2.while循环

          1) 计算1-100之间的累加和

    i = 1
    sum = 0
    while i <=100:
        sum = sum + i
        i +=1
    
    print('1~100的累加和为:%d '% sum)

          2)计算1-100之间所有的偶数累加和

    i = 1
    sum = 0
    while i <= 100:
        if i % 2 == 0:
            sum = sum + i
        i += 1
    print('1~100的偶数和为:%d ' % sum)

      4.2 break 和 continue

      当循环体执行到break语句时,就会马上退出循环

    while True:
        name = input('请输入一个名字(stop停止输入):')
        if name == 'stop':
            # 退出循环
            break
        else:
            print(name)

      当循环执行到continue语句时,跳过该次循环,并不退出循环

    i = 1
    sum =0
    while i < 100:
        if i % 2 == 0:
            # i 一定要加 1 ,否则会进入死循环
            i += 1
            # 如果 i 为偶数则跳过该次循环
            continue
    
        sum = sum + i
        i += 1
    print('1~100除偶数之外的累加和为: %d ' % sum)

     5.函数

       5.1 函数语法格式

        在python 中,函数使用def 关键字来定义,包含函数的名字(功能的名字),函数的实现(实现功能的代码)。

        函数的行为分为:函数定义和函数调用。

        1.函数定义是实现函  数功能的过程。

        2.函数调用是使用功能。

        注意:函数不调用是不会自动执行的。

        

        1-100这个功能,可以写成这样的一个函数(功能代码块):

    def my_sum():
        i = 1
        s = 0
        while i <= 100:
            s = s + i
            i += 1
        print('1~100的累计和为:%d ' % s)
    
    # 函数调用
    my_sum()

       5.2 函数的参数

        我们可以将我们要开始和结束数字传递给函数,让函数按照我们传递的参数来计算。

    def my_sum(start,end):
        my_start = start
        my_end = end
        my_sum = 0
        while my_start <= my_end:
            my_sum = my_sum + my_start
            my_start += 1
    
        print('%d~%d的累计和为:%d' % (start,end,my_sum))
    
    # 函数调用
    my_sum(2,50)

    函数参数的作用就是让函数依据我们给定的值来进行运算,这样可以增强函数的通用性。函数可以有多个参数。

    例如:我们想要编写一个具有加法功能函数,很显然需要两个参数:

    def my_add(num1,num2):
        result = num1 + num2
        print('num1 + num2 = ',result)
    my_add(10,20)
    def my_add(num1,num2):
        result = num1 + num2
        print('num1 + num2 = ',result)
    my_add(10,20)
    
    my_add(num1=10,num2=20)
    my_add(num2=20,num1=10)

        1.按照从左向右的顺序传递叫做位置参数。

        2.按照形参名字传递叫做关键字参数。

    def my_add(num1,num2,num3,num4):
        result = num1 + num2 + num3 +num4
        return result
    
    my_add(100,200,300,num4=10)

        注意:需要保证位置参数在关键字参数之前即可。

      5.3 函数的返回值

        return 语句将函数的运行结果返回给函数的调用者:

    def my_add(num1,num2):
        result = num1 + num2
        return result
    
    # 使用一个变量保存函数执行的结果
    my_add_result = my_add(10,20)
    #使用结果进行下一步计算
    finish_result = my_add_result + 100
    # 输出最终结果
    print('最终结果:',finish_result)

      注意:

        1.只要函数执行碰到return 就会停止执行;

        2.函数中可以编写多个return,但有且只有一个return 会执行;

        3.return 后面可以跟上要返回的值,单独使用相当于 return None.

        4.break 用在循环中,用来终止循环执行。return 用在函数中,用来终止函数执行。

      5.4 局部变量 和 全局变量

        1.全局变量:在函数外部定义的变量。全局指的是该变量在当前python 文件范围内是可见的。全局变量可以被当前python 文件内的所有函数直接使用。

        2.局部变量:在函数内部定义的变量,该变量只能在定义的函数内部使用。

        注意:python 解释器搜索同名变量时,是“就近原则”

      5.5 函数的缺省参数(默认参数)

        默认参数指的是当函数调用中省略了实参时默认使用的值。

        默认参数的语法与使用:

          1.在函数声明或定义时,直接对参数赋值。这就是设置形参的默认参数。

          2.在函数调用时,省略部分或全部的参数。这时可以用默认参数来代替。

    def my_function(a ,b=20 ,c=30):
        return a+b+c
    
    my_function(10)
    my_function(10,100)
    my_function(10,100,1000)

      注意:带有默认值的参数,一定要位于参数列表的最后面。

      

      5.6 函数文档及作用

        函数也需要添加注释,方便函数功能、参数以及返回值的含义能够被调用者知悉。

    # 单行函数文档字符串
    def my_function(param):
        """函数做了什么事,返回什么结果."""
        return param + 10
    
    # 多行函数文档字符串
    def my_add(num1,num2):
        """
        计算两个整数的和
        :param num1: 加法运算的左操作数
        :param num2: 加法运算的右操作数
        :return: 返回两个操作数相加的结果
        """
        result = num1 + num2
    
        return result

      注意:可以通过 ctrl + q 快捷键查看函数信息,也可以通过 help() 函数来查看函数信息。

      

      5.7 单一职责原则

        单一职责原则说的是一个函数只负责一个事情,这是因为,如果一个函数承担的职责过多,就等于把这些职责混合在一起,一个职责的变化可能会影响其他职责的能力。

        

    ============================================================================================

    6.容器

      根据不同容器的特性,将常用容器分为序列式容器和非序列式容器:

        1.序列式容器中的元素在存放时都是连续存放的,也就是序列式容器中,除了第一个元素的前面没有元素,最后一个元素的后面没有元素,其他所有的元素前后都有一个元素。包括:字符串、列表、元组。

        2.非序列式容器在存储元素时不是连续存放的,容器中的任何一个元素前后都可能没有元素。包括:字典、集合。

          1)序列式容器支持根据索引(下标)访问元素,而非序列式容器不支持索引(下标)的方式访问元素。

          2)序列式容器支持切片操作,而非序列式容器不支持切片操作。

      1.字符串

        1.1 字符串语法格式

          一般使用两个单引号或者两个双引号,很少使用三引号。

        1.2 字符串遍历

          字符串属于序列式容器,支持依据索引的操作。

          1)可以使用 while 循环来访问字符串容器中的每一个字符元素。

            注意:序列式容器的索引都是以 0 开始的,并不是从 1 开始。

    my_string = '我今年10岁了!'
    
    i = 0
    while i < len(my_string):
        print(my_string[i], end=' ')
        i += 1

          2) python 是一门简单易用的语言,对于容器的遍历,提供了另外一种简单方式,for 循环。

    my_string = '我今年10岁了!'
    for v in my_string:
        print(v, end=' ')

        1.3 字符串替换

          使用字符串的 replace 方法,该方法默认会将字符串中所有指定字符或子串替换为新的字符串,也可以指定第三个参数,替换多少次。

    poetry = '远看泰山黑乎乎,上头细来下头粗,茹把泰山倒过来,下头细来上头粗。茹'
    # 将所有的‘茹’ 替换为 ‘如’
    right_poetry = poetry.replace('', '')
    print(right_poetry)
    # 只替换第一次出现的‘茹’
    right_poetry = poetry.replace('' , '' , 1)
    print(right_poetry)

        1.4 字符串查找 和 切片

          例如:

          现在有一邮箱地址如下:

    user_email = 'simagoushen@itcast.cn'

          a. 我们希望从邮箱地址字符串中获取用户名和邮箱后缀名, 那么这个问题如何解决?

            1.由分析可知,@ 符号之前为用户名,@ 符号之后的内容为邮箱后缀名。

            2.首先获得@ 符号的位置,从开始位置截取到 @ 符号位置,即可获得用户名。

            3.从 @ 符号位置开始截取到字符串最后,即可获得邮箱后缀名。

          b. 如何获得@ 符号的位置?

            我们可以使用字符串提供的 find 方法,该方法可返回查找字符串第一次出现的位置,查找字符串不存在则会返回 -1.

            注意: find 方法默认从字符串 开始位置 ( 0 位置 )开始查找,我们也可以指定从哪个位置范围开始查找,设置 find 的第二个参数表示从哪个位置开始查找,第三个参数,表示查找结束位置。 

    poetry = '远看泰山黑乎乎,上头细来下头粗,茹把泰山倒过来,下头细来上头粗。'
    # 从 10 位置开始查找 ‘上’
    position = poetry.find('', 10 ,100)
    print(position)

          c. 如何获得指定范围的字符串?

            字符串属于序列式容器,可以根据索引获得某一个字符,也可以根据由两个索引标识的区间获得区间内的字符序列。

    poetry = '远看泰山黑乎乎,上头细来下头粗,茹把台上倒过来,下头细来上头粗。'
    # 从 0 位置开始到 7 位置之前,不包含 7 位置字符
    print(poetry[0:7])
    # 起始位置不写,默认就是0
    print(poetry[:7])
    # 从 0 位置开始到最后,结束位置不写默认字符最后一个位置的下一个位置。
    print(poetry[9:])
    # 步长,每个2个字符选取一个字符串,组成一个序列
    print(poetry[0:7:2])
    # 如果步长为负数,那么起始位置参数和结束位置参数就会反过来。
    print(poetry[6: : -1])
    # 位置也可以使用负数
    print(poetry[-3: -1])
    print(poetry[-3: ])
    print(poetry[: : -1])

          d. 下面我们看看你如何解决这个问题?

      

          

          

        

        

      

  • 相关阅读:
    layui表格数据统计
    浅谈权限控制
    搜索栏实时更新查找内容
    虚拟域名
    关于阿里云服务器安装了Apache开放80端口访问不了网页
    验证码思路
    计算标准差 Exercise07_11
    倒置数组 Exercise07_12
    找出最小元素的下标 Exercise07_10
    找出最小元素 Exercise07_09
  • 原文地址:https://www.cnblogs.com/chengshun/p/10513292.html
Copyright © 2020-2023  润新知