Python 基础语法整理
我们每学一门编程语言总是以一个简单的Hello World!程序开始学起,以此来初步了解的该编程语言的书写格式。所以学习Python这门被称为未来的编程语言,我们还是以Hello World!来开始python的从从入门到放弃之旅,当然在正式学习python这门编程语言之前我们需要了解python的历史、特点以及编译环境。
在linux操作系统下我们可以在终端窗口直接输入ipython3即可进行我们的python编程之路。如果没有安装ipython3的可以在终端中输入以下命令安装ipython3.
sudo apt-get install ipython3
因为都是从零开始学习,边学边忘是肯定不可避免的,所以在终端中练习python的语法,可能对初学者不太友好,所以在这里我们就直接使用python的编译器PyCharm来开始学习。在Linux安装Python就不详细介绍了,大家自行百度。
还有就是Ubuntu20.04的系统好像有Bug,PyCharm下载安装后,使用的时候不能输入中文。如果你也遇到这种情况的话,可以参考下面这篇博客解决。
Ubuntu20.04下安装的PyCharm无法输入中文的解决方法
1.Hello World!
print("Hello World!")
单看语法是不是贼简单,不用像写C、C++、Java代码那样头文件,main函数一大堆东西。一样的问题,用不同的语言解决,代码量差距还是很多的,一般情况下 Python
是 Java
的 1/5,所以说 人生苦短,我用 Python
在补充一下print()函数的使用
"""
正常情况下print()语句执行后会自动换行,我们可以在print(“输出内容“,end = "指定的内容结尾")
"""
# 执行完之后自动换行
print("Hello World!")
# 输出Hello World之后,以“print函数执行完了”替换换行
print("Hello World!",end="print函数执行完了")
2.注释
注释的作用:
使用自己熟悉的语言,在程序中对某些代码进行标注说明,以此来增加代码的可读性。
单行注释
- 以
#
开头,#
右边的所有东西都被当做说明文字,而不是真正要执行的程序,只起到辅助说明作用 - 示例代码如下:
# 这是第一个单行注释
print("hello python")
为了保证代码的可读性,
#
后面建议先添加一个空格,然后再编写相应的说明文字
多行注释
- 如果希望编写的 注释信息很多,一行无法显示,就可以使用多行注释
- 要在 Python 程序中使用多行注释,可以用 一对 连续的 三个 引号(单引号和双引号都可以)
- 示例代码如下:
"""
这是一个多行注释
在多行注释之间,可以写很多很多的内容……
"""
print("hello python")
- 注释不是越多越好,对于一目了然的代码,不需要添加注释
- 对于 复杂的操作,应该在操作开始前写上若干行注释
- 对于 不是一目了然的代码,应在其行尾添加注释(为了提高可读性,注释应该至少离开代码 2 个空格)
- 绝不要描述代码,假设阅读代码的人比你更懂 Python,他只是不知道你的代码要做什么
3.算术运算符
算术运算符
- 算数运算符是 运算符的一种
- 是完成基本的算术运算使用的符号,用来处理四则运算
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 10 + 20 = 30 |
- | 减 | 10 - 20 = -10 |
* | 乘 | 10 * 20 = 200 |
/ | 除 | 10 / 20 = 0.5 |
// | 取整除 | 返回除法的整数部分(商) 9 // 2 输出结果 4 |
% | 取余数 | 返回除法的余数 9 % 2 = 1 |
** | 幂 | 又称次方、乘方,2 ** 3 = 8 |
- 在 Python 中
*
运算符还可以用于字符串,计算结果就是字符串重复指定次数的结果
算术运算符的优先级
- 和数学中的运算符的优先级一致,在 Python 中进行数学计算时,同样也是:
- 先乘除后加减
- 同级运算符是 从左至右 计算
- 可以使用
()
调整计算的优先级
- 以下表格的算数优先级由高到最低顺序排列
运算符 | 描述 |
---|---|
** | 幂 (最高优先级) |
* / % // | 乘、除、取余数、取整除 |
+ - | 加法、减法 |
- 例如:
2 + 3 * 5 = 17
(2 + 3) * 5 = 25
2 * 3 + 5 = 11
2 * (3 + 5) = 16
4.变量
语法格式:
变量名称 = 变量的值
# 定义 qq 号码变量
qq_number = "1234567"
# 定义 qq 密码变量
qq_password = "123"
# 在程序中,如果要输出变量的内容,需要使用 print 函数
print(qq_number)
print(qq_password)
使用解释器执行,如果要输出变量的内容,必须要要使用
"""
在python中如何查看自己定义的变量是什么类型
使用type(变量的名称)函数来查看
"""
prince = 15
print(type(prince))
变量中的类型
- 在
Python
中定义变量是 不需要指定类型(在其他很多高级语言中都需要) - 数据类型可以分为 数字型 和 非数字型
- 数字型
- 整型 (
int
) - 浮点型(
float
) - 布尔型(
bool
)- 真
True
非 0 数
—— 非零即真 - 假
False
0
- 真
- 复数型 (
complex
)- 主要用于科学计算,例如:平面场问题、波动问题、电感电容等问题
- 整型 (
- 非数字型
- 字符串
- 列表
- 元组
- 字典
变量的输入
语法:字符串变量 = input(“提示信息:”)
input = input("请输入您的电话号:")
注意:这里的input函数默认输入端输入的是一个字符串类型
类型转换函数
函数 | 说明 |
---|---|
int(x) | 将 x 转换为一个整数 |
float(x) | 将 x 转换到一个浮点数 |
变量的格式化输出
格式化字符 | 含义 |
---|---|
%s | 字符串 |
%d | 有符号十进制整数,%06d 表示输出的整数显示位数,不足的地方使用 0 补全 |
%f | 浮点数,%.2f 表示小数点后只显示两位 |
%% | 输出 % |
- 语法格式如下:
print("格式化字符串" % 变量1)
print("格式化字符串" % (变量1, 变量2...))
最后一个买苹果的小练习来总结以上的语法
# 小明买苹果 name = "小明" """ 定义并输入苹果的价格 这里强制转换的函数可以分开两行写 如: price = input("请输入苹果的价格:") 然后将其转化成小数 prince = float(prince) 我这里就和在一起写了 """ price = float(input("请输入苹果的价格:")) # 输入想要买的数量 weight = float(input("请问您要买多少:")) # 小明总共有多少钱 sumMoney = 100 # 计算小明买苹果花了多少钱 sumPrice = weight * price # 计算买苹果花的钱占总数的百分之多少 percent = sumPrice / sumMoney # 最后格式化输出 print("一千克苹果单价%.2f,%s买了%.f千克苹果,花了%0.2f元,是小明总钱数的%.f%%" % (price,name,weight,sumPrice,percent * 100))
5.判断(if)语句
5.1 if判断语句的基本语法
在 Python
中,if 语句 就是用来进行判断的,格式如下:
if 要判断的条件:
条件成立时,要做的事情
……
注意:代码的缩进为一个
tab
键,或者 4 个空格 —— 建议使用空格
- 在 Python 开发中,Tab 和空格不要混用!
5.2 else处理条件不满足
else
,格式如下:
if 要判断的条件:
条件成立时,要做的事情
……
else:
条件不成立时,要做的事情
……
注意:
if
和else
语句以及各自的缩进部分共同是一个 完整的代码块
5.3 逻辑运算符
and
条件1 and 条件2
- 与/并且
- 两个条件同时满足,返回
True
- 只要有一个不满足,就返回
False
or
条件1 or 条件2
- 或/或者
- 两个条件只要有一个满足,返回
True
- 两个条件都不满足,返回
False
not
not 条件
- 非/不是
5.4 elif
- 在开发中,使用
if
可以 判断条件 - 使用
else
可以处理 条件不成立 的情况 - 但是,如果希望 再增加一些条件,条件不同,需要执行的代码也不同 时,就可以使用
elif
- 语法格式如下:
if 条件1:
条件1满足执行的代码
……
elif 条件2:
条件2满足时,执行的代码
……
elif 条件3:
条件3满足时,执行的代码
……
else:
以上条件都不满足时,执行的代码
……
- 对比逻辑运算符的代码
if 条件1 and 条件2:
条件1满足 并且 条件2满足 执行的代码
……
5.5 if语句的嵌套
elif 的应用场景是:同时 判断 多个条件,所有的条件是 平级 的
- 在开发中,使用
if
进行条件判断,如果希望 在条件成立的执行语句中 再 增加条件判断,就可以使用 if 的嵌套 - if 的嵌套 的应用场景就是:在之前条件满足的前提下,再增加额外的判断
- if 的嵌套 的语法格式,除了缩进之外 和之前的没有区别
- 语法格式如下:
if 条件 1:
条件 1 满足执行的代码
……
if 条件 1 基础上的条件 2:
条件 2 满足时,执行的代码
……
# 条件 2 不满足的处理
else:
条件 2 不满足时,执行的代码
# 条件 1 不满足的处理
else:
条件1 不满足时,执行的代码
……
5.6 随机数的处理
- 在
Python
中,要使用随机数,首先需要导入 随机数 的 模块 —— “工具包”
import random
- 导入模块后,可以直接在 模块名称 后面敲一个
.
然后按Tab
键,会提示该模块中包含的所有函数 random.randint(a, b)
,返回[a, b]
之间的整数,包含a
和b
- 例如:
random.randint(12, 20) # 生成的随机数n: 12 <= n <= 20
random.randint(20, 20) # 结果永远是 20
random.randint(20, 10) # 该语句是错误的,下限必须小于上限
还是和之前介绍变量一样,用一个小练习来巩固一下if条件判断语句
""" 练习目标 自己和电脑来一局石头剪刀布的小游戏 定义 石头(1) 剪刀(2) 布(3) 电脑随即出拳,用户输入自己要出的拳 """ # 导包 import random userDelect = int(input("请输入您要出的拳(石头(1) 剪刀(2) 布(3):")) comDelect = random.randint(1,3); if ((userDelect == 1 and comDelect == 2) or (userDelect == 2 and comDelect == 3) or (userDelect == 3 and comDelect == 1)): print("恭喜您获得本次比赛的胜利!") elif userDelect == comDelect : print("平局!") else : print("很遗憾,您输了比赛!")
6.while循环
循环这里就写while 循环的语法介绍
初始条件设置 —— 通常是重复执行的 计数器
while 条件(判断 计数器 是否达到 目标次数):
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
...(省略)...
处理条件(计数器 + 1)
还是和之前一样通过两个小例子来学习和巩固while循环的语法
循环类加奇数和偶数
"""
通过while循环来完成一个0~100之间所有的偶数和奇数的加和运算
"""
# 定义计数器
i = 0
# 定义偶数的加和结果
evenSum = 0
# 定义奇数的加和结果
oddSum = 0
while i <= 100 :
if (i % 2 == 0) :
evenSum += i
else :
oddSum += i
i += 1
print("偶数的加和结果是:%d" % evenSum)
print("奇数的加和结果是:%d" % oddSum)
改善我们之前写的和电脑玩的猜拳小游戏
"""
练习目标
自己和电脑来一局石头剪刀布的小游戏
定义 石头(1) 剪刀(2) 布(3)
电脑随即出拳,用户输入自己要出的拳
输入exit结束游戏
"""
# 导包
import random
comDelect = random.randint(1,3);
i = 1
# 设置死循环根据玩家的输入判断是否继续游戏
while i > 0 :
# 外层循环只执行一次
userDelect = int(input("请输入您要出的拳石头(1) 剪刀(2) 布(3):"))
if ((userDelect == 1 and comDelect == 2) or
(userDelect == 2 and comDelect == 3) or
(userDelect == 3 and comDelect == 1)) :
print("恭喜您赢得本局游戏!")
elif userDelect == comDelect :
print("本次比赛平局,继续努力!")
else :
print("很遗憾,您输掉了本局游戏!")
# 内部嵌套while死循环,让玩家自己选择继续还是结束游戏
while 1:
userInput = input("请您选择是否继续游戏 是(yes) 否(exit):")
if userInput == "yes":
userDelect = int(input("请输入您要出的拳石头(1) 剪刀(2) 布(3):"))
if ((userDelect == 1 and comDelect == 2) or
(userDelect == 2 and comDelect == 3) or
(userDelect == 3 and comDelect == 1)):
print("恭喜您赢得本局游戏!")
elif userDelect == comDelect:
print("本次比赛平局,继续努力!")
else:
print("很遗憾,您输掉了本局游戏!")
else:
break
i -= 1
7. 函数
7.1 函数的定义
1.使用这种语法定义的是一个没有参数没有返回值的函数
def 函数名():
函数封装的代码
……
2.定义有参数的函数
def sum_2_num():
num1 = 10
num2 = 20
result = num1 + num2
print("%d + %d = %d" % (num1, num2, result))
3.定义有参数以及返回值的函数
def sum_2_num(num1, num2):
"""对两个数字的求和"""
return num1 + num2
实例如下代码
# 定义一个没有参数的函数
def printChar() :
# 打印50次*号
print("*" * 50)
# 定义一个有参数的函数,求两个数的和
def sum1(number1,number2) :
sum = number1 + number2
print(sum)
# 定义一个有参有返回值的函数
def sum2(number1,number2) :
return number1 + number2
# 调用无参函数
printChar()
# 调用有参函数
sum1(10,12)
# 调用有参有返回值的函数
sum = sum2(100,10)
print(sum)
8.字符串的常用操作
8.1 判断类型
方法 | 说明 |
---|---|
string.isspace() | 如果 string 中只包含空格,则返回 True |
string.isalnum() | 如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True |
string.isalpha() | 如果 string 至少有一个字符并且所有字符都是字母则返回 True |
string.isdecimal() | 如果 string 只包含数字则返回 True,全角数字 |
string.isdigit() | 如果 string 只包含数字则返回 True,全角数字 、⑴ 、\u00b2 |
string.isnumeric() | 如果 string 只包含数字则返回 True,全角数字 ,汉字数字 |
string.istitle() | 如果 string 是标题化的(每个单词的首字母大写)则返回 True |
string.islower() | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True |
string.isupper() | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True |
8.2 查找和替换
方法 | 说明 |
---|---|
string.startswith(str) | 检查字符串是否是以 str 开头,是则返回 True |
string.endswith(str) | 检查字符串是否是以 str 结束,是则返回 True |
string.find(str, start=0, end=len(string)) | 检测 str 是否包含在 string 中,如果 start 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1 |
string.rfind(str, start=0, end=len(string)) | 类似于 find(),不过是从右边开始查找 |
string.index(str, start=0, end=len(string)) | 跟 find() 方法类似,不过如果 str 不在 string 会报错 |
string.rindex(str, start=0, end=len(string)) | 类似于 index(),不过是从右边开始 |
string.replace(old_str, new_str, num=string.count(old)) | 把 string 中的 old_str 替换成 new_str,如果 num 指定,则替换不超过 num 次 |
8.3 大小写转换
方法 | 说明 |
---|---|
string.capitalize() | 把字符串的第一个字符大写 |
string.title() | 把字符串的每个单词首字母大写 |
string.lower() | 转换 string 中所有大写字符为小写 |
string.upper() | 转换 string 中的小写字母为大写 |
string.swapcase() | 翻转 string 中的大小写 |
8.4 文本对齐
方法 | 说明 |
---|---|
string.ljust(width) | 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串 |
string.rjust(width) | 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串 |
string.center(width) | 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串 |
8.5 去除空白空格
方法 | 说明 |
---|---|
string.lstrip() | 截掉 string 左边(开始)的空白字符 |
string.rstrip() | 截掉 string 右边(末尾)的空白字符 |
string.strip() | 截掉 string 左右两边的空白字符 |
8.6 拆分和连接
方法 | 说明 |
---|---|
string.partition(str) | 把字符串 string 分成一个 3 元素的元组 (str前面, str, str后面) |
string.rpartition(str) | 类似于 partition() 方法,不过是从右边开始查找 |
string.split(str="", num) | 以 str 为分隔符拆分 string,如果 num 有指定值,则仅分隔 num + 1 个子字符串,str 默认包含 ‘\r’, ‘\t’, ‘\n’ 和空格 |
string.splitlines() | 按照行(’\r’, ‘\n’, ‘\r\n’)分隔,返回一个包含各行作为元素的列表 |
string.join(seq) | 以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
无需强行记忆,只是在用的时候,查阅相关文档或者博客即可
9.时间日期的操作
时间和日期的操作这里就不向上面一样介绍了,我觉得像这种类似工具般的语法,只是在自己需要的时候,找出来用就可以了,不需要刻意的去背。所以这里是引用了一下别人总结的博客。
python中时间和日期函数使用指南