# 注释内容
#
井号,只能单行注释。'''
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 -*-
输入输出语句是实现人机交互的关键。
完整格式形如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'
决定的。
格式一: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语言无法这样。
格式二: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 = "小红"))
格式三:print(f"普通字符{常量、变量、表达式}")
year = 2023
print(f"我的年龄是{18}岁,今年是{year}年,1+2={1+2}")
f - 格式化字符串(Python3.6新增) 比百分号输出格式与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语言中的输入语句,将用户提示输出语句和输入绑定在一起。
i = 0;
if i > 1:
# 逻辑代码
pass
elif i < -1:
# 逻辑代码
pass
else:
# 逻辑代码
pass
由if
、elif
、else
划分分支,常用于单变量分类讨论。可以嵌套,但不推荐过多的嵌套,不够优雅。
注意:
elif
代替了 else if
。pass
关键词用于给未完成的逻辑代码占位,避免语法报错。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!
# 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
方法复制一份,对该复制列表进行遍历即可。
i = 0
while i <= 5:
# 逻辑代码
i += 1
while 循环与 for 循环往往可以等价替换,常用于退出条件明确而循环次数未知的情况。
在游戏编程中,我们往往习惯用While True
无限循环包裹。
# 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
用于循环语句中,跳过当前循环,继续下一个循环。注意计数器是否变化,否则容易死循环。
break
用于循环语句或 switch 语句中,跳出当前层循环,不能跳出多层循环。
# 无变量
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
关键字占位,后续再补充逻辑。
本章总结了诸多Python中的语句,现在,你可以书写一些简单的小程序了。