说在前面:因为大学计算机课作业要写就看了一下,自己本来也对python很感兴趣,无奈时间紧只能迅速入个门,都是一些最基础的东西(语法啊什么的),以后肯定是要深入的学下去的。

一、配置环境

本来就已经配置好环境了,就不再重复操作了(毕竟这只是我的学习笔记,不是教程哈哈)。

二、基本语法与程序

2.1——变量与数据类型
2.1.1 变量
没什么好说的跟C语言一样,有一点点不同的是python中变量不用声明就可以使用。字符变量的话记得打 " " 不然会报错(日常踩坑)。

2.1.2 变量的命名规则
跟C语言一样
(1)只能由大小写英文字母、’ _ ’ 和数字组成。(其实也可以用中文但是极力不推荐)
(2)变量名第一个必须是大小写英文字母或者下划线 ’ _ '。
(3)英文大小写区分。
(4)变量名不能与关键字重复。

2.1.3 python的数值类型、布尔与字符串数据类型
数值类型:分为整型和浮点型(跟C语言差别不大)
布尔类型:只有两个值 True 和 False (注意 T 和 F 都是大写),一般用于条件运算中。
字符串类型:用单引号 ’ ’ 或双引号 " " 包起来的变量(注意:如果字符串需要包含引号本身,可用另一种引号包起来,如 str = ’ " 你好! " '。如果字符串中需要包含特殊字符,可以在字符串中使用逃逸字符(逃逸字符自己看逃逸字符表))

2.1.4 print 及 type 命令的使用
print用来输出指定对象的内容,语法为:
print (对象1,对象2…,sep = 分隔字符,end = 终止符)
1、print命令一次可以打印多个对象数据,对象之间以 “,”分开。
2、sep:分隔符,默认为一个空格符,可自己设置。
3、end:终止符,默认为换行符(“/n”),可自己设置。
此外print命令支持格式化功能,跟C语言一样 “%d” 代表整数, “%f" 代表浮点数, ”%s" 代表字符串,不一样的是在python不需要用逗号( ,)分隔打印内容和变量,应用的%,而且当有多个变量需要对应前边的占位符是只要写一次%然后用括号括起后面的一堆变量,变量之间用逗号分隔就完事了。
例如

name = "Amy"
score = 80
print("%s"的成绩是"%d"分"%(name,score))

还有另一种方法就是用字符串的format对字符串的输出进行格式化,用一对{}来代替上面的占位符就ok。

如果不知变量的类型就可以用type(对象)取得对象的数据类型。

2.1.5数据类型的转换
变量的数据类型非常重要,因为通常情况下只有相同类型的变量才能进行运算’
python提供了简单的数据类型自动转换功能:整型与浮点型运算自动将整型转化成浮点型,结果为浮点型。如果是数值与布尔型运算,系统会自动将布尔值转换为数值再运算,即将Ture转换为1,False转化为0。如果系统无法自动转换就需要我们强制转化了。
int():强制转换成整型
float():强制转换为浮点型
str():强制转换为字符串型

2.2 表达式
2.2.1 input 命令
变量 = input([提示字符串])
例如:

key = input("请输入密码:")
print(key)

(注意格式!!!)

2.2.2算术运算符
加减乘除取余跟C语言没啥区别,就是多了两个 “//” 取商的整数部分,“ ** ” 表示(操作数1)的(操作数2)次方,例如:7**2表示7的2次方。

2.2.3 关系运算符
与C语言完全一致,只不过运算的结果将会是布尔值Ture 和 False。

2.2.4 逻辑运算符
and:逻辑且
or:逻辑或
not:逻辑非
运算的结果依旧是布尔值

2.2.5复合赋值运算符
就是操作之后赋值给自己的运算
+=相加后赋值给自己
-=相减后赋值给自己
*=相乘后赋值给自己
/=(看得懂就不再写了,下面的也一样)
%=
//=
**=

(注意:运算符“+”既可以用于数值运算,也可以用于字符串连接,所以在操作的时候要注意操作数的类型)

2.3 条件语句
2.3.1 程序流程控制
跟C语言一样程序分为顺序、分支以及循环三种。
Python流程控制命令分为两大类:分支控制和循环控制。

2.3.2单分支条件语句
“if…"语句,与C语言用法没什么大区别,就是要记得冒号括号后面用的是“:”,然后记得缩进!

if(代码):
	print("你好")

缩进这里重点提醒一下,在C语言中语句块是用一对大括号来表示的,但是在python中用的是缩进,所以一定要记得缩进。

2.3.3 双分支条件语句

if (条件表达式):
	程序块一
else:
	程序块二

2.3.4 多分支条件语句

if (条件表达式):
	程序块一
elif(条件表达式二):
	程序块二
	.........
else:
	程序块n

2.3.5 条件嵌套
跟C语言一样,在if里面疯狂套娃,再写if
注意:嵌套层数太多的话会降低程序可读性,而且维护困难。

三、循环、数据结构及函数

3.1循环
3.1.1 List(列表)结构
格式是将元素放在中括号里,元素之间用逗号分隔开,如下:

列表名称 = [ 元素1,元素2,.....]

元素的数据类型可以相同也可以不同
通过列表变量的下标访问列表元素的值。下标值用 [ ] 括起来,从0开始计数;第一个元素值下标为0,第二个为1,以此类推。注意下标不能超出列表范围,否则会报错。
列表下标值可以是负数,表示由列表最后向前取值,“-1”表示最后一个元素,“-2”表示倒数第二个,以此类推。
列表的元素还可以是另一个列表,这样就形成多维列表。多维列表的访问直接套娃即可。例如:

list1 = [["joe","123"],["Amy","124"],["Tom","125"]]
print(list1[1])   #元素为列表["Amy","124"]
print(list1[1][1])   #元素为124

3.1.2 range() 函数
range()函数的功能是创建一个整数有序列表,在循环和遍历中经常使用到。
生成列表:

list1 = range(5)  #list1 = [0,1,2,3,4]

生成自定义范围的列表:

list2 = range(M,N)    #元素值从M开始到N-1结束

起始值和终止值都可以是负整数,但如果起始值大于或等于终止值,产生的是空列表。

生成从M开始到N-1步长为O的列表

list3 = range(M,N,O)

3.1.3 for循环
基本语法为

for 循环变量 in 列表:
	程序块     #注意缩进!!

执行for循环时,系统会将列表的元素值依次赋予给环境变量,环境变量改变一次就会执行一次“程序块”,即列表有多少个元素,就会执行多少次“程序块”里的语句。

3.1.4 for循环的嵌套
就是套娃,for里面套for。注意:要关注执行次数问题,其执行次数是各层循环的乘积,如果循环次数太多会耗费大量计算资源。

3.1.5 break及continue命令
跟C语言一样,break是跳出整个循环,continue是跳出单次循环

3.1.6 for…if…else 循环
一般配合if和break使用,其语法为:

for 变量 in 列表 :
	程序块一
	if(条件表达式):
		程序块二
		break
	else:
		程序块三

3.1.7 while 循环
通常用于非固定次数的循环,基本语法为:

while(条件表达式):   #其中,条件表达式的括号可以省略
	程序块

如果条件表达式为True,就执行程序块,否结束while循环

列表、元组及字典
3.2.1 高级列表操作
(省略,看书上的表)
用append()或insert()添加列表元素

list1 = [1,2,3,4,5,6]
list1.append(8)   #list1 = [1,2,3,4,5,6,7,8]

注意:append()每次只能增添一个元素也可以是列表,并加到列表最后。

list1 = [1,2,3,4,5,6]
list1.insert(3,8)  #list1 = [1,2,3,8,4,5,6]
list1[7] = 8   #错误,下标超出范围

注意:insert()每次也只能添加一个元素,但是可以指定位置,注意下标值不能超出列表个数。

append()方法与extend()方法的区别
两者都是把数据添加到列表最后面,不同之处在于append()方法的参数可以是元素,也可以是列表,当参数是列表时,会把这个列表当成一个元素加入原列表。例如:

list1 = [1,2,3,4,5,6]
list1.append(7)   #list1 = [1,2,3,4,5,6,7]
list1.append([8,9])   #list1 = [1,2,3,4,5,6,7,[8,9])

而extend()方法的参数只能是列表,不能是元素。而且会将列表中的元素作为元素逐一加入列表中,例如:

list1 = [1,2,3,4,5,6]
list1.extend([7,8])   #list1 = [1,2,3,4,5,6,7,8]

pop()方法取出并删除元素
pop()方法可以有参数也可以没有,如果没有的话默认取出最后一个元素;如果有参数,参数的数据类型必须为整型。括号里面写的是列表的下标。

list1 = [1,2,3,4,5,6]
n = list1.pop(3)   #n=4,list1 = [1,2,3,5,6]
n = list1.pop()   #n=6,list1 = [1,2,3,5]

3.2.2 元组结构
元组就是不能修改的列表。形式上的区别是元组用小括号包起来,列表用的是方括号。

列表和元组的互相转换
list命令可将元组转换为列表,tuple命令可以将列表转换为元组。
元组转换为列表示例:

tuple1 = (1,2,3,4)
list1 = list(tuple1)

列表转元组示例:

list1 = (1,2,3,4)
tuple1 = tuple(list1)

3.2.3 字典结构
字典结构中的元素是以“键——值”对方式存储的,相当于自动贩卖机,按商品查询按钮就可以找到对应的商品的价格。其语法为:

字典名称 = {键1:值1,键2:值2...}

由于字典是使用“键”作为下标来返回“值”,因此“键”是唯一的,而“值”可以重复。如果“键”重复的话,前面的“键”无效,只有最后的“键”有效。
元素在字典中的排列顺序是随机的,与输入顺序不一定相同。所以不能用下标来定位字典里的元素。

修改字典元素值的方法是对“键”设定新“值”,新元素值会取代旧元素值,例如:

dict1 = {"可乐":3,"橙汁":4,"奶茶":5}
dict1(["奶茶"]) = 10

新增元素的方法是设置新“键”及新“值”,例如:

dict1 = {"可乐":3,"橙汁":4,"奶茶":5}
dict1 = (["雪碧":3])

删除字典有三种情况
1、删除字典中的特定元素

del 字典名称[键]

2、删除字典中的所有元素

字典名称.clear()

3、删除字典变量
字典变量删除后该字典变量就不存在了(一般用于用完字典后)

del 字典名称

示例:

dict1 = {"可乐":3,"橙汁":4,"奶茶":5}
del dict1["可乐"]   #删除“可乐”:3 这个元素
dict1.clear()       #删除所有元素
del dict1           #删除dict1变量

3.2.4 常用字典操作
具体看书上的表

keys()方法、values()方法及items()方法
字典的keys()方法可以获取由所有“键”组成的组合,数据类型为dict_key;values()方法可获取由所有“值”组成的组合,数据类型为dict_values。可将keys()方法和value()方法返回的数据转换成列表,获取元素值,两者结合后就可以输出字典的全部内容。
例如:

dict1 = {"张三":70,"李四":75,"王小明":80}
listkey = list(dict1.keys())
listvalue = list(dict1.values())
for i in range(len(listkey)):
	peint("%s的成绩为 %d分"%(listkey[i],listvalue[i]))

如果用items(),上面这个例子应该为

dict1 = {"张三":70,"李四":75,"王小明":80}
listitem = dict1.items()
for name,value in listitem:
	peint("%s的成绩为 %d分"%(name,score))

get()方法及setdefault()方法
get()方法可以返回”键“对应的”值“,其语法为:

字典名称.get(键[,缺省值])

其中缺省值可有可无。所以get方法执行结果可能有三种情况:
1、“键”存在,不论是否设置缺省值,都返回“键”对应的“值”
2、“键”不存在,也没有设置缺省值,会返回“None”
3、“键”不存在,设有缺省值,返回缺省值。

setdefault()方法的用法、功能及返回值与get()方法完全相同。两者区别在于get()方法不会改变字典的内容,而setdefault()方法若“键”存在,字典内容不变,若“键”不存在,则会把“键——值”对加入字典作为字典元素(若设定了缺省值,把“键:缺省值”作为元素添加到字典中;若没有设定缺省值,则把“键:None”作为元素加到字典里)

函数
3.3.1 自定义函数
创建函数的语法为:

def 函数名称([参数1,参数2,...]):
	程序块
	[return 返回值1,返回值2,...]

基本用法跟C语言差不多,就是船舰和调用函数时的语法稍有不同
调用时:

[变量=] 函数名称 ([参数])

如果有返回值,可以用变量来储存返回值。

3.3.2 不定参函数
python创建函数时可以让函数不预先设定参数个数,方法是在参数名称前加星号,语法为:

def 函数名称(*参数):

3.3.3 变量的有效范围
全局变量:定义在函数外的变量,有效范围是整个python文件
局部变量:定义在一个函数中的变量,有效范围限于该函数内部。
注意:若有相同名字的全局变量与局部变量,则在函数内部会使用局部变量,在函数外部使用全局变量。

3.3.4 系统内置函数
有很多函数都可以直接调用,具体看书上的表。

3.3.5 导入包
有内建包和第三方开发的包,内建包只需要用import命令导入即可,第三方包则需要安装后才能用import命令经行导入。
内建包语法:

import 包名称

示例:

import random

通常包中有许多函数可以供开发者调用,使用语法为:

包名称.函数名称

例如,random包中包含了seed()、random()、choice()等,使用seed()的方法为:

random.seed()

另外一种导入包的方法(较推荐)

from 包名称 import *

用这种导入包的方法后,使用其中的函数就不必再输入包的名称。
这种方法虽然方便,但是也有一些风险:每个包内,一般都包含了很多方法,若两个或多个包都包含一个同名的函数时,使用时就可能产生错误。
于是就有了import的第三种方法:

from 包名称 import 函数1,函数2...

通过导入在指定包里的函数,就能避免函数名称重复的错误。

end.