py001_python的基础语法

1. 注释

  • **概述:**注释在python中用于解释代码的功能和用途,方便开发者阅读和理解代码,本身不参与程序的运行。

  • **分类:**单行注释和多行注释

  • 写法:

    • 单行注释:
      • # 注释内容,只对 # 所在行生效,换行后注释效果消失
      • 可以使用在代码末尾
      • PyCharm快捷键:ctrl + /
    • 多行注释:
      • 使用三对引号进行注释,在引号内部可以随意换行
      • 可以使用单引号和双引号,作用完全相同
      • 多行注释不能写在代码末尾
      • 多行注释没有快捷键,如果对于多行数据内容进行ctrl + / 则对于每一行数据进行单行注释
  • 注意: 所有的符号必须使用英文标点,否则报错

  • 代码示例:

    # print("hello world")  # 注释的内容不会被执行
    print("单行注释可以放置在代码末尾")  # 单行注释
    # SyntaxError: invalid syntax  语法错误
    # print('多行注释不能放置在代码末尾') '''多行注释不能写在代码末尾'''
    

2. 变量

  • **概述:**变量是 Python 中用于存储数据的容器,可存放不同类型的数据(如数字、字符串等 ),程序运行时能通过变量名访问和操作对应数据,我们在使用变量时,其实使用的是变量中的数据。

  • 特性:

    • 容器:用来储存数据的容器
    • 临时:数据存储在内存当中,程序结束后或重启计算机等情况都可以销毁变量
    • 可变:在程序运行过程中,变量可以被修改
  • 变量的简单用法:

    • 变量的定义格式:变量名 = 变量值
    • 变量的调用格式:直接使用变量名即可调用变量中的数据
    • 在程序运行中还可以修改变量的值
  • 代码示例:

    # 变量的定义格式: 变量名 = 变量值
    name = "Tom"
    age = 18
    is_student = True
    # 变量的调用格式: 直接使用变量名即可调用变量中的数据
    print(name)
    print(age)
    print(is_student)
    # 在程序运行过程中还可以修改变量的值
    age = 19
    print(age)
    

3. 变量的数据类型

  • **概述:**变量的数据类型用于明确变量存储数据的特征与可执行的操作,在python中,变量类型由赋值的数据自动推导,无需手动声明,即变量值是什么类型,变量就是什么类型,一个变量的类型会因为值的类型改变而改变。

  • 分类:

    • 整型(int):保存的是整数
    • 浮点型(float):保存的是小数
    • 布尔型(bool):只有True和False两个值,表示是或者否
    • 字符串类型(str):表示多个字符的组合,数据左右两侧加引号(单引号或双引号均可,但必须成对)的都是字符串类型
    • 列表(list)
    • 元组(tuple)
    • 字典(dict)
    • 集合(set)
  • 特点:

    • 不同的数据类型在不同的存储区域
    • 不同的数据类型使用的数据结构不同
    • 不同的数据类型占用的空间大小不同
    • 不同的数据类型具备的功能不同
  • 提示:

    • 使用type函数可以查询数据的数据类型
    • 变量需要先定义再调用,如果该变量名没有被定义则会报错
    • 变量名和变量类型没有关系,但是使用时尽可能的见名知意
  • 代码示例:

    # 整型
    num = 10
    print(num)          # 10
    print(type(num))    # <class 'int'>
    
    # 浮点型
    price = 12.5
    print(price)        # 12.5
    print(type(price))  # <class 'float'>
    
    # 布尔型
    has_error = False
    print(has_error)        # False
    print(type(has_error))  # <class 'bool'>
    
    # 字符串类型
    #在python中 数据左右两侧加引号的都是字符串类型,可以是单引号也可以是双引号,但是必须是成对,不能一单一双
    name = "euler"
    print(name)             # euler
    print(type(name))       # <class 'str'>
    
    # 变量需要先定义再调用,如果该变量名没有被定义则会报错
    # print(age)  # NameError: name 'age' is not defined
    age = 19
    print(age)
    print(type(age))
    
    # 变量名和变量类型没有关系,但是使用时尽可能的见名知意
    float1 = 'float'
    print(float1)           # float
    print(type(float1))     # <class 'str'>
    

4. 标识符和关键字

  • 概述:

    • **标识符:**程序员自己定义的,有特殊功能的字符组合
    • **关键字:**系统或者python定义的,有特殊功能的字符组合,程序员定义标识符不能使用关键字
  • 标识符的命名规则:

    • 只能由字母数字,下划线组成
    • 不能以数字开头
    • 不能使用关键字
    • 严格区分大小写
  • 代码示例:

    # 只能由字母数字,下划线组成
    a123___456 = 789
    print(a123___456)
    # a123_$_456 = 789      # SyntaxError: invalid decimal literal
    # a123_ _456 = 789      # SyntaxError: invalid decimal literal
    
    # 不能以数字开头
    # 123a = 123            # SyntaxError: invalid decimal literal
    # print(123a)
    
    # 不能使用关键字
    # False = 123           # SyntaxError: cannot assign to False
    # print(False)
    
    # 严格区分大小写
    # a = 10
    # print(A)              # NameError: name 'A' is not defined
    
  • 标识符的命名规范:

    • 大驼峰命名法:每个单词首字母大写
      • Python中的类名使用大驼峰命名法,StudentManageSystem
    • 小驼峰命名法:除了首字母外其余单词首字母大写,studentSystem
    • 下划线分隔法:单词中间用下划线分隔开
      • Python中的变量名 函数名 方法名 文件名等 使用下划线分隔法,student_name
    • 标识符要做到见名知意,增强代码的可读性
    • 不要使用单个字母加数字的方式命名,容易混淆

5. 输出

  • **概述:**使用计算机向用户返回数据叫做输出。

  • **输出函数:**print()

  • **普通输出:**使用print()函数输出数据

    • 可以输出任意类型的数据或表达式
    • 可以通过变量名进行输出
    • 可以同时输出多个值
  • **格式化输出:**输出格式化后的数据,固定格式进行输出,在特定的位置更换输出内容

    • %占位符输出
      • 格式:“要输出的内容 占位符1,占位符2 …” % (数据1,数据2,…)
      • 占位符:使用特定的符号进行占位,在运行时使用具体的数据将其替换掉
        • 常用的占位符:
          • %s:用来接收字符串数据
          • %d:用来接收整型数据
          • %f:用来接收浮点型数据
        • 使用规范:
          • 可以有一个占位符,也可以有多个
          • 占位符的数量和变量的数量必须保持一致,不能多,也不能少
          • 占位符与变量顺序要依次对应,不能交叉赋值也不能跳跃赋值
          • 占位符与变量一定要数据类型完全对应
          • 在格式化字符串时,百分号后只能识别一个数据,所以如果有多个变量需要使用括号括起来
    • str.format()方法
      • 格式:“要输出的内容{},{} …”.format (数据1,数据2,…)
    • f-string方法(python 3.6+ 推荐)
      • 格式:f"要输出的内容{数据1},{数据2} …"
    • **注意:**上述三种方式是字符串格式化的方法,是字符串本身的功能,跟输出本身没有关系,当我们需要对字符串进行格式化时都可以使用这三种方法,不是只能用于输出。
    • **精度控制:**使用格式化拼接字符串的方式,可以进行精度处理
      • %f:浮点型可以保留n位小数 例如%.nf 保留n位小数,保留两位小数时会进行四舍五入
      • %d:可以占n为不足位用空格或者0补齐,例如%0nd,如果不足则使用0补齐,如果查出n位则原样显示
  • print()函数参数:

    • sep:多个数据之间的分隔符,默认使用空格进行分隔
    • end:打印结束之后的结束符,默认使用 换行符
  • 代码示例:

    # 普通数据输出
    print(123)  # 输出数值
    print("I love python")  # 输出字符串
    print(1 + 3)  # 输出计算式
    print(False)  # 输出布尔值
    name = "euler"
    print(name)  # 通过变量名输出
    print(520, "python", name)  # 可以同时输出多个值
    
    # 输出格式化后的字符串
    # 格式化字符串的格式: "要输出的字符信息 %占位符" % 变量  此时就可以将变量与字符串格式化拼接到一起
    name = "Alice"
    print("my name is %s" % name)
    # 格式化和print没有任何关系,他只负责输出
    age = 18
    output_str = "I'm %d years old." % age
    print(output_str)
    
    # 多占位符的格式化方式
    name = "小龙女"
    age = 18
    gender = '女'
    # 多占位符格式化字符串方式:"要输入的字符串信息, %占位符1, %占位符2...." % (变量1, 变量2 ....)
    # 占位符一定要数据类型准确,%d 接收整型数据  %f 接收浮点型数据 %s 接收字符串类型数据
    # print("故事的主角是%s,年龄%d岁,性别为%s" % name, age, gender)       # TypeError: not enough arguments for format string
    # print("故事的主角是%s,年龄%d岁,性别为%s" % (name, age))             # TypeError: not enough arguments for format string
    # print("故事的主角是%d,年龄%d岁,性别为%s" % (name, age, gender))     # TypeError: %d format: a real number is required, not str
    
    print("故事的主角是%s,年龄%d岁,性别为%s" % (name, age, gender))
    print("故事的主角是{},年龄{}岁,性别为{}".format(name, age, gender))  # str.format()方式
    print(f"故事的主角是{name},年龄{age}岁,性别为{gender}")  # f-string 方式
    
    # 精度控制
    name = "小帅"
    age = 18
    height = 1.88
    money = 9
    
    # 这个男人叫小帅,那一年他18岁,身高1.880000米,身价9个小目标
    print("这个男人叫%s,那一年他%d岁,身高%f米,身价%d个小目标" % (name, age, height, money))
    # 这个男人叫小帅,那一年他18岁,身高1.88米,身价9个小目标
    print("这个男人叫%s,那一年他%d岁,身高%.2f米,身价%02d个小目标" % (name, age, height, money))
    money = 99999
    # 这个男人叫小帅,那一年他18岁,身高1.9米,身价99999个小目标
    print("这个男人叫%s,那一年他%d岁,身高%.1f米,身价%03d个小目标" % (name, age, height, money))
    
    # print()函数详解
    # print函数中有一些参数
    # sep 多个数据之间的分隔符,默认使用空格进行分隔
    # end 打印结束之后的结束符,默认使用 换行符
    
    # 一次打印多个姓名,并且使用逗号进行分隔
    print("黄药师", "欧阳锋", "洪七公")  # 同时打印,但是间隔符默认为空格
    print("黄药师", "欧阳锋", "洪七公", sep=',')  # 一次打印,中间用逗号隔开
    
    # 打印一首诗,每次打印完成后,不使用换行符,而是使用,和。分隔
    print("十步杀一人", end=',')
    print("千里不留行", end='。')
    print("事了拂衣去", end=',')
    print("深藏功与名", end='。')
    
    # 特殊符号: \n(换行符) \t(制表位,就是为了对齐文字,可以理解为多个空格)  按tab键和其效果一致
    print("南帝\n一灯大师")
    print("中神通\t王重阳")
    

6. 输入

  • **概述:**输入就是人类向计算机输入数据

  • **输入函数:**input()

  • 特性:

    • input是一个阻塞函数,在运行后会阻塞到input函数的调用位置,等待数据的输入。如果没有输入代码将不会向下继续执行
    • input函数中可以添加提示信息,也就是在让程序员输入数据前提示要输入的内容
    • 通过input函数接收的所有数据都是字符串数据类型
  • 代码示例:

    # input函数中可以添加提示信息,也就是在让程序员输入数据前提示要输入的内容
    # input("请输入您的密码:")
    
    # 可以使用变量接受input输入进来的数据信息
    password = input("请输入您的密码:")
    print(f"您的密码是:{password}")  # 密码是:123
    print(type(password))  # <class 'str'>
    

7. 数据类型转换

  • **概述:**不同的数据类型之间进行转换

  • 转换格式:

    • 将数据转换为int类型数据:int(值或变量)
    • 将数据转换为float类型数据:float(值或变量)
    • 将数据转换为str类型数据: str(值或变量)
  • 转换函数详解:

    • int()
      • 可以转换float类型为int,会将小数部分全部清除
      • 可以转换str类型为int,但是字符串内部必须是整型数,否则报错
    • float()
      • 可以转换int类型为float,但是会在整数末尾添加.0
      • 可以转换str类型为float,但是必须是浮点数或者整数,如果是整数同样会在末尾添加.0
    • str()
      • 任何数据类型都能转换为str
    • **eval():**去除字符串左右两侧的引号,内部是什么就运行什么
      • 如果引号里面是一句python语句,eval之后就会直接执行这个语句
  • 代码示例:

    int1 = 520
    float1 = 3.1415
    str1 = "hello"
    str2 = "12345"
    str3 = "789.123"
    str4 = "abc123"
    str5 = "123abc"
    
    # int()
    print(int(float1))  # 3
    # print(int(str1))          # ValueError: invalid literal for int() with base 10: 'hello'
    print(int(str2))  # 12345
    # print(int(str3))          # ValueError: invalid literal for int() with base 10: '789.123'
    # print(int(str4))          # ValueError: invalid literal for int() with base 10: 'abc123'
    # print(int(str5))          # ValueError: invalid literal for int() with base 10: '123abc'
    
    # float()
    print(float(int1))  # 520.0
    # print(float(str1))        # ValueError: could not convert string to float: 'hello'
    print(float(str2))  # 12345.0
    print(float(str3))  # 789.123
    # print(float(str4))        # ValueError: could not convert string to float: 'abc123'
    # print(float(str5))        # ValueError: could not convert string to float: '123abc'
    
    # str()
    print(str(int1))
    print(str(float1))
    
    # eval() 去除字符串左右两侧的引号,内部是什么就运行什么
    str2 = "12345"
    print(eval(str2))
    print(type(eval(str2)))
    
    str3 = "789.123"
    print(eval(str3))
    print(type(eval(str3)))
    
    str6 = "False"
    print(eval(str6))
    print(type(eval(str6)))
    
    # 将下方字符串左右两侧的引号去除,就是打印hello world 的代码,所以使用eval可以打印hello world
    eval("print('hello world')")  # hello world
    
    # NameError: name 'age' is not defined
    # 将str7左右两侧的引号去除,age就是一个变量名,但是变量名没有被定义所以会报错
    # 注意: 变量必须先定义再调用
    str7 = "age"
    print(eval(str7))
    print(type(eval(str7)))
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值