1.注释
1.1 单行注释
#这是注释内容
print("hello world!")print("hello world!") #在代码后也可以编写注释
1.2 多行注释
"""代码完成的功能是,打印输出 hello world
1.首先调用 print 函数
2.给 print 函数传入要打印输出的参数"""
print("hello world!")
1.3 快捷键注释
快捷键注释 ctrl + /
2.变量
2.1 变量定义语法
变量在程序中表现为一个唯一不重复的名字,只需要定义一个名字,给这个名字变量赋值即可。
注意:变量意味着存储的数据是可以变化的。
#定义一个变量,名字为val ,这个变量临时存储的值为100
val = 100
#下面将这个变量的值,更改为其他的值 200
val = 200
注意:这里的等号(=),叫做赋值运算符,表示将 = 号后面的数据存储到名字为 = 号前面的名字变量里。
在取变量名时,注意:
1.标识符由字母、下划线和数字组成,且数字不能开头;
2.python 中的标识符是区分大小写的;
3.变量名一般用小写加下划线组成;
4.不能和关键字和已有的名字冲突;
2.2 变量的类型
1) 数字类型:整数和小数
2)字符串类型:除了数字类型的数据,处理更多的就是字符串类型数据;
在python 程序里,无论任何字符写到两个单引号或者双引号内部,都称为 字符串。
3) 布尔类型:用于表示逻辑运算结果,该变量只有两个值,True 或者 False.
注意:python 中定义变量时 不需要指定类型,python 会根据变量的值来推导变量的类型,可以使用type()函数来查看变量的类型。
2.3 不同类型之间的运算规则
1)算术运算符
+ - * / : 加 减 乘 除
// 取整数
% 取余数
** 幂
2)复合赋值运算符
= 赋值
+= 加法赋值
-= 减法赋值
*= 乘法赋值
/= 除法赋值
//= 取整赋值
%= 取模(余数)赋值
**= 幂赋值
注意:
1.数字和数字之间可以进行所有的运算
2.数字和字符串之间只能进行乘法运算
3.字符串和字符串之间可以进行加法运算
2.4 变量的输入和输出
1.print 函数
1)普通输出变量
#定义一个整数类型变量
my_number = 100
#定义一个字符串类型变量
my_string = 'hello world!'
#输出两个变量
print(my_number)print(my_string)
注意:变量名不能加引号
2)格式化输出变量
格式化输出就是让数据按照一定的格式输出,例如:我的名字是xxx.
进行格式化输出的流程:
1.先定义输出格式.
2.在格式中填充数据.
案例:已知有数据:name = '司马二狗',age = 30,salary = 19988.78,请按照“我的名字是xxx,我的年龄是xxx,我的工资是xxx”的格式将变量输出。
定义输出格式,需要用到格式化占位符,用来暂时替代不确定的值。
% 被称为 格式化操作符,专门用于处理字符串中的格式
1. 包含 % 的字符串,被称为 格式化字符串
2. % 和不同的 字符 连用,不同类型的数据 需要使用 不同的格式化字符
常用格式化字符:
%s 字符串
%d 有符号十进制整数,%06d 表示输出的整数显示位数,不足的地方使用 0 补全
%f 浮点数, %.2f 表示小数点后只显示两位
%% 输出%
#定义名字、年龄、工资变量
name = '司马二狗'age= 30salary= 19988.78
#格式化字符串
format_string = '我的名字是%s,我的年龄是%d,我的工资是%.2f' %(name,age,salary)#输出格式化后的字符串
print(format_string)
2.input函数
input函数主要用于从键盘获取数据。
注意:无论输入的数据是小数、整数、还是字符串,input函数统统当做字符串类型来获取。
#获得键盘输入
your_name = input('请输入您的名字:')#输出内容
print(your_name)
2.5变量的类型转换
变量类型转换就是将变量的类型,由一种类型转换为另一种类型。
例如:将变量从数字类型转换为字符串类型
由于各种原因,在拿到数据之后,数据的类型和我们预期的不符,导致无法进行相关的计算(数据类型决定了数据之间的运算规则),因此我们需要先将数据的类型转换为我们预期的类型,再进行计算。
因为 input接受的任何数据都当做了 string 类型来处理。此时如果想要进行数值运算,就必须将字符串转换为数字类型,再进行计算,因为类型不同,运算规则不同。
使用以下函数完成变量类型的转换:
1.int(val) 将变量(val) 转换为 int 类型;
2.float(val) 将变量 (val)转换为 float 类型;
3.str(val) 将变量(val)转换为 str 类型;
#输入左操作数
left_number = input('请输入一个数字:')#输入右操作数
right_number = input('请输入一个数字:')#将字符串类型变量转换为数字类型
left_number_int =int(left_number)
right_number_int=int(right_number)#对两个数进行加法计算
result = left_number_int +right_number_int#计算结果
print(result)
3.分支语句
3.1 if 分支语句
1)单个分支语法格式
a = 10
if a > 5:print('a>5')
2)两个分支语法格式
name = 'Obama'
if name == 'Obama':print('我是Obama')elif name =='Trump':print('我是Trump')
name = 'Obama'
if name == 'Obama':print('我是Obama')else:print('我是其他人!')
3)多个分支语法格式
day = input('请输入1-7的数字:')if day =='1':print('今天是星期一')elif day == '2':print('今天是星期二')elif day == '3':print('今天是星期三')elif day == '4':print('今天是星期四')elif day == '5':print('今天是星期五')elif day =='6':print('今天是星期六')elif day == '7':print('今天是星期日')else:print('无法确定星期几')
3.2 if 条件成立
1.运算符:== 、 != 、 > 、 < 、 >= 、 <=
#请输入你的用户名
username = input('请输入您的用户名:')#请输入您的密码
password = input('请输入您的密码:')#判断用户名是否正确
if username =='admin':#再判断密码是否合法
if password == 'admin':#打印欢迎信息
print('欢迎 %s 登录系统!' % username)
2.多个条件之间的关系
运算符:and 、or 、not
a = 10b= 20c= 30d= 40
#and 两个条件都为真,则结果为真
result = a > b and c
result = a > b or c
result = not(a >b )print('reslut:',result)
3.猜拳游戏
importrandom
user_quan= int(input('请出拳 石头(0)、剪刀(1)、布(2):'))
computer_quan= random.randint(0,2)if (user_quan == 0 and computer_quan ==1) or\
(user_quan== 1 and computer_quan == 2) or\
(user_quan== 2 and computer_quan ==0):print('您赢了!')elif user_quan ==computer_quan:print('平局!')else:print('您输了!')
4.循环语句
4.1 while 循环
1.while循环的语法格式
while 条件:
重复执行的一行或多行代码
2.while循环
1) 计算1-100之间的累加和
i = 1sum=0while i <=100:
sum= sum +i
i+=1
print('1~100的累加和为:%d'% sum)
2)计算1-100之间所有的偶数累加和
i = 1sum=0while i <= 100:if i % 2 ==0:
sum= sum +i
i+= 1
print('1~100的偶数和为:%d' % sum)
4.2 break 和 continue
当循环体执行到break语句时,就会马上退出循环
whileTrue:
name= input('请输入一个名字(stop停止输入):')if name == 'stop':#退出循环
break
else:print(name)
当循环执行到continue语句时,跳过该次循环,并不退出循环
i = 1sum=0while i < 100:if i % 2 ==0:#i 一定要加 1 ,否则会进入死循环
i += 1
#如果 i 为偶数则跳过该次循环
continuesum= sum +i
i+= 1
print('1~100除偶数之外的累加和为: %d' % sum)
5.函数
5.1 函数语法格式
在python 中,函数使用def 关键字来定义,包含函数的名字(功能的名字),函数的实现(实现功能的代码)。
函数的行为分为:函数定义和函数调用。
1.函数定义是实现函 数功能的过程。
2.函数调用是使用功能。
注意:函数不调用是不会自动执行的。
1-100这个功能,可以写成这样的一个函数(功能代码块):
defmy_sum():
i= 1s=0while i <= 100:
s= s +i
i+= 1
print('1~100的累计和为:%d' %s)#函数调用
my_sum()
5.2 函数的参数
我们可以将我们要开始和结束数字传递给函数,让函数按照我们传递的参数来计算。
defmy_sum(start,end):
my_start=start
my_end=end
my_sum=0while my_start <=my_end:
my_sum= my_sum +my_start
my_start+= 1
print('%d~%d的累计和为:%d' %(start,end,my_sum))#函数调用
my_sum(2,50)
函数参数的作用就是让函数依据我们给定的值来进行运算,这样可以增强函数的通用性。函数可以有多个参数。
例如:我们想要编写一个具有加法功能函数,很显然需要两个参数:
defmy_add(num1,num2):
result= num1 +num2print('num1 + num2 =',result)
my_add(10,20)
defmy_add(num1,num2):
result= num1 +num2print('num1 + num2 =',result)
my_add(10,20)
my_add(num1=10,num2=20)
my_add(num2=20,num1=10)
1.按照从左向右的顺序传递叫做位置参数。
2.按照形参名字传递叫做关键字参数。
defmy_add(num1,num2,num3,num4):
result= num1 + num2 + num3 +num4returnresult
my_add(100,200,300,num4=10)
注意:需要保证位置参数在关键字参数之前即可。
5.3 函数的返回值
return 语句将函数的运行结果返回给函数的调用者:
defmy_add(num1,num2):
result= num1 +num2returnresult#使用一个变量保存函数执行的结果
my_add_result = my_add(10,20)#使用结果进行下一步计算
finish_result = my_add_result + 100
#输出最终结果
print('最终结果:',finish_result)
注意:
1.只要函数执行碰到return 就会停止执行;
2.函数中可以编写多个return,但有且只有一个return 会执行;
3.return 后面可以跟上要返回的值,单独使用相当于 return None.
4.break 用在循环中,用来终止循环执行。return 用在函数中,用来终止函数执行。
5.4 局部变量 和 全局变量
1.全局变量:在函数外部定义的变量。全局指的是该变量在当前python 文件范围内是可见的。全局变量可以被当前python 文件内的所有函数直接使用。
2.局部变量:在函数内部定义的变量,该变量只能在定义的函数内部使用。
注意:python 解释器搜索同名变量时,是“就近原则”
5.5 函数的缺省参数(默认参数)
默认参数指的是当函数调用中省略了实参时默认使用的值。
默认参数的语法与使用:
1.在函数声明或定义时,直接对参数赋值。这就是设置形参的默认参数。
2.在函数调用时,省略部分或全部的参数。这时可以用默认参数来代替。
def my_function(a ,b=20 ,c=30):return a+b+c
my_function(10)
my_function(10,100)
my_function(10,100,1000)
注意:带有默认值的参数,一定要位于参数列表的最后面。
5.6 函数文档及作用
函数也需要添加注释,方便函数功能、参数以及返回值的含义能够被调用者知悉。
#单行函数文档字符串
defmy_function(param):"""函数做了什么事,返回什么结果."""
return param + 10
#多行函数文档字符串
defmy_add(num1,num2):"""计算两个整数的和
:param num1: 加法运算的左操作数
:param num2: 加法运算的右操作数
:return: 返回两个操作数相加的结果"""result= num1 +num2return result
注意:可以通过 ctrl + q 快捷键查看函数信息,也可以通过 help() 函数来查看函数信息。
5.7 单一职责原则
单一职责原则说的是一个函数只负责一个事情,这是因为,如果一个函数承担的职责过多,就等于把这些职责混合在一起,一个职责的变化可能会影响其他职责的能力。
============================================================================================
6.容器
根据不同容器的特性,将常用容器分为序列式容器和非序列式容器:
1.序列式容器中的元素在存放时都是连续存放的,也就是序列式容器中,除了第一个元素的前面没有元素,最后一个元素的后面没有元素,其他所有的元素前后都有一个元素。包括:字符串、列表、元组。
2.非序列式容器在存储元素时不是连续存放的,容器中的任何一个元素前后都可能没有元素。包括:字典、集合。
1)序列式容器支持根据索引(下标)访问元素,而非序列式容器不支持索引(下标)的方式访问元素。
2)序列式容器支持切片操作,而非序列式容器不支持切片操作。
1.字符串
1.1 字符串语法格式
一般使用两个单引号或者两个双引号,很少使用三引号。
1.2 字符串遍历
字符串属于序列式容器,支持依据索引的操作。
1)可以使用 while 循环来访问字符串容器中的每一个字符元素。
注意:序列式容器的索引都是以 0 开始的,并不是从 1 开始。
my_string = '我今年10岁了!'i=0while i
i+= 1
2) python 是一门简单易用的语言,对于容器的遍历,提供了另外一种简单方式,for 循环。
my_string = '我今年10岁了!'
for v inmy_string:print(v, end=' ')
1.3 字符串替换
使用字符串的 replace 方法,该方法默认会将字符串中所有指定字符或子串替换为新的字符串,也可以指定第三个参数,替换多少次。
poetry = '远看泰山黑乎乎,上头细来下头粗,茹把泰山倒过来,下头细来上头粗。茹'
#将所有的‘茹’ 替换为 ‘如’
right_poetry = poetry.replace('茹', '如')print(right_poetry)#只替换第一次出现的‘茹’
right_poetry = poetry.replace('茹' , '如' , 1)print(right_poetry)
1.4 字符串查找 和 切片
例如:
现在有一邮箱地址如下:
user_email = 'simagoushen@itcast.cn'
a. 我们希望从邮箱地址字符串中获取用户名和邮箱后缀名, 那么这个问题如何解决?
1.由分析可知,@ 符号之前为用户名,@ 符号之后的内容为邮箱后缀名。
2.首先获得@ 符号的位置,从开始位置截取到 @ 符号位置,即可获得用户名。
3.从 @ 符号位置开始截取到字符串最后,即可获得邮箱后缀名。
b. 如何获得@ 符号的位置?
我们可以使用字符串提供的 find 方法,该方法可返回查找字符串第一次出现的位置,查找字符串不存在则会返回 -1.
注意: find 方法默认从字符串 开始位置 ( 0 位置 )开始查找,我们也可以指定从哪个位置范围开始查找,设置 find 的第二个参数表示从哪个位置开始查找,第三个参数,表示查找结束位置。
poetry = '远看泰山黑乎乎,上头细来下头粗,茹把泰山倒过来,下头细来上头粗。'
#从 10 位置开始查找 ‘上’
position = poetry.find('上', 10 ,100)print(position)
c. 如何获得指定范围的字符串?
字符串属于序列式容器,可以根据索引获得某一个字符,也可以根据由两个索引标识的区间获得区间内的字符序列。
poetry = '远看泰山黑乎乎,上头细来下头粗,茹把台上倒过来,下头细来上头粗。'
#从 0 位置开始到 7 位置之前,不包含 7 位置字符
print(poetry[0:7])#起始位置不写,默认就是0
print(poetry[:7])#从 0 位置开始到最后,结束位置不写默认字符最后一个位置的下一个位置。
print(poetry[9:])#步长,每个2个字符选取一个字符串,组成一个序列
print(poetry[0:7:2])#如果步长为负数,那么起始位置参数和结束位置参数就会反过来。
print(poetry[6: : -1])#位置也可以使用负数
print(poetry[-3: -1])print(poetry[-3: ])print(poetry[: : -1])
d. 下面我们看看你如何解决这个问题?