【Python基础】4. 基本语句

文章目录

  • 注释(Comment)
    • 解释伴随行
    • 文本编码问题
  • 输入输出语句(Input & Output)
    • 输出语句
      • 普通输出
      • 格式化输出(3种)
      • format 格式总结
    • 输入语句
  • 基本语句
    • if 语句
    • match 语句(Python3.10 新增)
    • for 循环语句
    • while 循环语句
    • while/for .. else语句
    • continue 语句
    • break 语句
    • return 语句
    • pass 语句
  • 总结


注释(Comment)

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

解释伴随行

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

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

$ ./test.py

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

python test.py

文本编码问题

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

# coding = utf-8
# -*- coding: utf-8 -*-

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

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

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

# coding = GBK
# coding = gbk
# -*- coding: GBK -*-
# -*- coding: gbk -*-

输入输出语句(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(常量、变量、表达式列表)

实例

print("Hello world")
a = 1
print(a)
print(2)
print(a, 2)
  • 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))
    

    该格式与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 = "小红"))
    
    • format格式功能非常强大,风格与 C# 类似。详见 format 格式总结
    • 带编号format格式重复使用某些变量时具备优势,使得表达简洁,灵活
    • 带键值format格式可以使表达式不拘泥于顺序,而按键值配对,更加灵活
  3. 格式三print(f"普通字符{常量、变量、表达式}")

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

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


format 格式总结

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

输入语句

语法格式形如

str1 = input(“提示信息”)

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

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


基本语句

if 语句

i = 0;
if i > 1:
	# 逻辑代码
	pass
elif i < -1:
	# 逻辑代码
	pass
else:
	# 逻辑代码
	pass

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

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!

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

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

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

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


while 循环语句

i = 0
while i <= 5:
	# 逻辑代码
	i += 1

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("正常结束!")

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

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


continue 语句

continue

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


break 语句

break

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


return 语句

# 无变量
return

# 单个变量
return True
return x
return a+b

# 多个变量
return a, b              # 默认以元组形式返回
return (a, b)            # 与上式等效
return [a, b]            # 以列表形式返回
return {'1': a, '2': b}  # 以字典形式返回

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

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


pass 语句

pass

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


总结

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

你可能感兴趣的:(编程基础,python,开发语言)