• 【Python基础】4. 基本语句



    注释(Comment)

    • 单行注释
      # 注释内容
      
      • 1
      #井号,只能单行注释
    • 多行注释
      '''
      	2023.1.21
      	新年好!
      '''
      """
      	除了单引号
      	双引号也可以哦
      """
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      '''"""包裹,可以多行注释,一般用于解释函数或程序功能

    解释伴随行

    在一些编辑器中,新建 Python 模板会自带形如#!/usr/bin/env python注释

    实际上,#!类Unix系统中的Shebang符号,即解释伴随行。该代码告诉操作系统执行该脚本时,调用系统环境下的 python 解释器。可以在git bash中使用,直接调用文件名执行。

    $ ./test.py
    
    • 1

    Windows系统中,该代码实际无效,可以删除。例如在power shell中运行,仍需采用python [file]形式调用。

    python test.py
    
    • 1

    文本编码问题

    在新建 Python 模板往往会自带以下注释之一,一般位于文件开头前两行。

    # coding = utf-8
    # -*- coding: utf-8 -*-
    
    • 1
    • 2

    解释器会读取该注释,并按指定文本编码解码,从而避免乱码问题。

    Python2.x版本中,默认编码格式为ASCII,而Python3.x中,默认编码格式为UTF-8

    如果出现中文乱码或报错现象,可以指定编码格式为GBK。大小写皆可。

    # coding = GBK
    # coding = gbk
    # -*- coding: GBK -*-
    # -*- coding: gbk -*-
    
    • 1
    • 2
    • 3
    • 4

    输入输出语句(Input & Output)

    输入输出语句是实现人机交互关键

    输出语句

    完整格式形如print(*object(s), sep=' ', end='\n', file = sys.stdout, flush = False)

    参数含义
    *object(s)任意数量的输出,以逗号,分隔
    sep可选,指定如何分割多个输出对象,默认为空格' '
    end可选,指定在末尾打印的内容,默认为换行'\n'
    file可选,写入方法的对象,默认为sys.stdout
    flush可选,指定输出是刷新(True)还是缓冲(False)。默认为False
    print("hello world!", end = "")
    
    • 1

    不会自动换行


    普通输出

    语法格式形如

    print(常量、变量、表达式列表)

    实例

    print("Hello world")
    a = 1
    print(a)
    print(2)
    print(a, 2)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • Python 可以同时输出多个值,输出结果由空格分隔,这是由sep参数默认为空格' '决定的。C语言必须书写多个格式声明才能实现。可见 Python 的输出功能更加简洁强大

    • Python 中一个 print 输出结束后会自动换行C语言printf 不会。这是由end参数默认为换行'\n'决定的。


    格式化输出(3种)

    1. 格式一print(格式控制 % 输出列表)

      print("我今年的年龄%d" % 18)
      print("酒精浓度为%s%%" % 50)
      print("今年是%d,去年是%d,明年是%d" % (2023, 2022, 2024))
      print("今年是%s,去年是%s,明年是%s" % (2023, 2022, 2024))
      
      • 1
      • 2
      • 3
      • 4

      该格式与C语言类似。多个输出时用小括号包裹。输出百分号使用两个连续百分号%%

      Python%s既可以输出字符串,也可以输出整型浮点型C语言无法这样。

    2. 格式二print("普通字符{format格式}".format(输出列表))

      # 无编号
      print("我今年的年龄{}".format(18))
      print("今年是{},去年是{},明年是{}".format(2023, 2022, 2024))
      # 带编号
      print("今年是{0},去年是{1},明年是{2}".format(2023, 2022, 2024))
      print("今天是{0}年的尾声,你好{0},再见{0}".format(2022)
      # 带键值
      print("我是{a},她是{b},{b}喜欢{a}".format(a = "小明", b = "小红"))
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • format格式功能非常强大,风格与 C# 类似。详见 format 格式总结
      • 带编号format格式重复使用某些变量时具备优势,使得表达简洁,灵活
      • 带键值format格式可以使表达式不拘泥于顺序,而按键值配对,更加灵活
    3. 格式三print(f"普通字符{常量、变量、表达式}")

      year = 2023
      print(f"我的年龄是{18}岁,今年是{year}年,1+2={1+2}")
      
      • 1
      • 2

      f - 格式化字符串(Python3.6新增百分号输出格式format 输出格式更加高效简洁


    format 格式总结

    格式样例输出说明
    {:.nf}{:.0f} 3.14153保留n位小数(n = 0,1…)
    {:+.nf}{:+.2f} 3.1415+3.14带符号保留n位小数
    {:m>nd}{:0>3d} 1001向左补0
    {:m{:x<3d} 11xx向右补x
    {:>nd}{:>3d} 1右对齐
    {:{:<3d} 1左对齐
    {:^nd}{:^3d} 1中间对齐
    {:,}{:,} 100000100,000千位分隔符
    {:%}{:.0%} 0.550%百分比格式
    {:e}{:.1e} 50000005.0e+06指数格式

    输入语句

    语法格式形如

    str1 = input(“提示信息”)

    • 输出提示信息后,等待用户输入
    • 一般存储至变量中,如password = input("请输入密码:")
    • 所有用户输入都视作字符串类型,如果后续用于数值比较,需要转换数据类型

    显然,Python 优化了C语言中的输入语句,将用户提示输出语句输入绑定在一起。


    基本语句

    if 语句

    i = 0;
    if i > 1:
    	# 逻辑代码
    	pass
    elif i < -1:
    	# 逻辑代码
    	pass
    else:
    	# 逻辑代码
    	pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    ifelifelse划分分支,常用于单变量分类讨论。可以嵌套,但不推荐过多的嵌套,不够优雅。

    注意

    1. Python 中用关键字 elif 代替了 else if
    2. pass关键词用于给未完成的逻辑代码占位,避免语法报错

    match 语句(Python3.10 新增)

    i = 1;
    match i:
    	case 0:
    		# 逻辑代码
    		pass
    	case 1:
    		# 逻辑代码
    		pass
    	case 2|3:
    		# 逻辑代码
    		pass
    	case _:
    		# 逻辑代码
    		pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    match 语句用于多分支离散型数据分类。Python3.10 新增。

    • case _类似C语言中的default,可以匹配任意字段

    • 不同 case 子句语句块一致,可以通过|设置多个匹配条件共用语句块。

    形式和上述用法match 语句C语言中的switch 语句几乎没什么不同,而且使用 if 语句也完全可以实现上述需求,那这种新特性的意义何在?

    实际上,match 语句适用范围远远不止上述字面量的分类判断。列举一个比较重要的特性match 语句可以将match后的待匹配变量的值,赋值case后的变量

    def func1(name):
       match name:
           case "":
               print("...")
           case myName:
               print(f"Hi, my name is {myName}!")
    func1("TOM") # Hi, my name is TOM!
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    for 循环语句

    # 1
    str1 = "abcdef" # 字符串序列
    for i in str:
    	print(i)
    
    # 2
    for i in range(1, 6):
    	print(i) # 1 2 3 4 5
    
    # 3
    str1 = "abcdef" # 字符串序列
    for i, j in enumerate(str):
    	print(f"第{i}个字母为{j}")
    
    # 4. 错误示例
    list1 = [1, 2, 3, 4, 5]
    for i, num in enumerate(list1):
    	if num == 2:
    		list1.remove(list1[i])
    	print(num)   # 1 2 4 5   与预期输出不符
    
    # 5. 正确示例
    list1 = [1, 2, 3, 4, 5]
    for i, num in enumerate(list1.copy()):
    	if num == 2:
    		list1.remove(list1[i])
    	print(num)   # 1 2 3 4 5
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    for 循环一般用于可迭代对象遍历

    如对列表可变类型进行循环操作 ,涉及增改删时需慎重。这些操作会改变原有列表元素,从而导致遍历结果异常

    正确且常用的操作是将列表通过copy方法复制一份,对该复制列表进行遍历即可。


    while 循环语句

    i = 0
    while i <= 5:
    	# 逻辑代码
    	i += 1
    
    • 1
    • 2
    • 3
    • 4

    while 循环for 循环往往可以等价替换,常用于退出条件明确循环次数未知的情况。

    游戏编程中,我们往往习惯用While True无限循环包裹。


    while/for … else语句

    # 1. while..else
    i = 0
    while i <= 5:
        print(i)
        i += 1
    else: # 循环正常退出时执行
        print("循环结束!")
    
    # 2. for..else
    str1 = "abcdef"
    for str in str1:
        print(str)
    else: # 循环正常退出时执行
        print("正常结束!")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    else 关键字可以和循环配合使用,这是C语言所不具备的特性。当循环正常退出时执行 else 后的代码。

    break 会影响 else 的执行,continue 不会影响。


    continue 语句

    continue
    
    • 1

    用于循环语句中,跳过当前循环,继续下一个循环。注意计数器是否变化,否则容易死循环


    break 语句

    break
    
    • 1

    用于循环语句switch 语句中,跳出当前层循环,不能跳出多层循环


    return 语句

    # 无变量
    return
    
    # 单个变量
    return True
    return x
    return a+b
    
    # 多个变量
    return a, b              # 默认以元组形式返回
    return (a, b)            # 与上式等效
    return [a, b]            # 以列表形式返回
    return {'1': a, '2': b}  # 以字典形式返回
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    用于函数中,可以跳出当前函数。当缺省时,实际返回None

    特别的,Python支持同时返回多个变量,默认以元组类型打包。这是C语言所不具备的。


    pass 语句

    pass
    
    • 1

    表示什么都不做。在编程的过程中,可以先用 pass 关键字占位,后续再补充逻辑


    总结

    本章总结了诸多Python中的语句,现在,你可以书写一些简单的小程序了。

  • 相关阅读:
    go语言 反向代理
    [内存泄漏][PyTorch](create_graph=True)
    Vue Transition 过渡组件 + animate.style 动画库的使用
    油猴脚本(JavaScript)-练手-简单的随机音乐播放器
    Python灰帽编程——定制EXP武器库
    三道MySQL联合索引面试题,淘汰80%的面试者,你能答对几道
    SpringMVC框架的介绍与使用
    Scrapy爬虫方法
    【C++初阶(五)类和对象(上)】
    electron基础使用
  • 原文地址:https://blog.csdn.net/m0_46500149/article/details/132261854