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. 下面我们看看你如何解决这个问题?