[从零开始学Python]1.编写代码基础、数据类型
Python第一讲
1.Python的注释
print('hello python')
# 单行注释的添加方法
# print函数可以同时输出多个字符串
print('hello','python','bye')
# print函数默认输出带换行,可以用参数end=''来修改分隔符
print(1,end=' ')
print(2,end=' ')
print(3,end=' ')
print(4,)
'''
多行注释的添加方法
'''
print(500)
print('500+800=',500+800)
2.Python的输入与输出
3.变量
# 我们通常用一个变量来接受这个input输入,这样输入就被命名为我们定义的变量,之后我们可以通过调用这个变量来找到用户输入的内容
name = input('请你输入一个名字:')
print('你输入的名字是:',name)
# 例子:正方形的面积
'''
在这里要注意,input接收到的输入默认为字符串类型
因此如果我们期待的是一个整数型的变量,那么要用int()函数来转型
'''
a = int(input('请输入正方形的边长:'))
s = a*a
print('正方形的面积为:',s)
4.变量命名
变量的命名规范
1.在一段代码内,尽量不要重名
2.变量名由字母,数字,下划线组成,但不能以数字开头!
3.Python中的标识符是区分大小写的
4.我们不能与python的保留关键字重名
我们可以通过两行简单的命令来找到python默认的关键字
>>>import keyword
>>>keyword.kwlist
# 以下便是python默认的关键字
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
驼峰命名法is good
>>>teacherName = 'lsw'
>>>stu_self = MiddleStudent('lsw',20)
5.Python语法格式缩进
Python与c或java等不同,是严格要求缩进的,因为python是依靠缩进来判断代码行的归属关系
在这里提供一个编写python代码的小技巧
我们都知道Tab键可以快捷缩进,但当我们希望取消这个缩进时除了用Delete去一个个的删除,还可以用Shift+Tab键进行反缩进,尽管单次的使用可能节省不了多少时间,但这种精确高效的撤销缩进方式不仅b格满满,而且绝对不会出错呦~
# 关于缩进的实例
a = 99
if a>=0:
'''
当检测到在:后回车,会自动缩进两个字符
:是python特有的需要用到的字符,印象中c或者java很少用到:
还有记住Shit+Tab键可以反缩进哦~
'''
print('a>=0')
print('答案正确')
else:
print('a<0')
print('end')
# 尽管这两个print挨的很近,但他们归属于不同的代码块;end的输出与判断是平级的,因此不会受到if判断的影响
Python中的数据类型
1.Python并不需要声明数据类型
变量的数据类型是在它被赋值时决定的,当然,当我们重复对一个变量赋值时,它的数据类型是会根据你的赋值而改变的
例如:
>>> a = 100
>>> type(a)
<class 'int'>
>>> a = 'abc'
>>> type(a)
<class 'str'>
python相对于c语言等来讲,其数值类型划分并没有那么详细,例如c会将int整数型划分为 tinny int,short int,long int,long long int 等,而python只统称为int,且并不用事先进行类型声明,这样一来变量可以随意变换数值类型,因而更加灵活,所付出的代价就是,代码执行的效率会降低。
2.运算符
与其他语言一样,python也可以用±*/%等运算符,两个星号代表的是指数运算符,例如2**3=8
3.字符串的问题
1.字符串中添加特殊符号
如果我们希望给一个变量带有“ ’ ”号的字符串的赋值
直接输入可能会遇到这种情况
>>> str1 = 'hello i'm python'
File "<stdin>", line 1
str1 = 'hello i'm python'
^
SyntaxError: invalid syntax
解决办法:在’号前加一个转译符\
>>> str1 = 'hello i\'m python'
>>> str1
"hello i'm python"
2.字符串的拼接
1.利用“+”进行拼接
2.利用“join”的方式拼接
例:
>>> list_str = ['ni','hao','bei','jing']
>>> str2 = ' '.join(list_str)
>>> str2
'ni hao bei jing'
3.利用“fomat”的方式拼接
例:
>>> str3 = '我喜欢{},因为我需要{}'.format('python','挣钱')
>>> str3
'我喜欢python,因为我需要挣钱'
4.字符串切片
我们可以把这种字符串的存储方式理解成一个列表,根据这种方式进行筛选
>>> s = 'abcdefg'
>>> s[0]
'a'
>>> s[3]
'd'
>>> s[1:3]
'bc'
>>> s[:4]
'abcd'
>>> s[::2]
'aceg'
例:将字符串倒叙输出
在c或java中,如果我们希望把一个字符串倒序输出出来,那可能要用到循环,容器等,而在python中,可以通过很简单的一句话实现
>>> s
'abcdefg'
>>> s[::-1]
'gfedcba'
5.字符串常用的 操作函数
1.find()
功能:find也就是查找的意思;参数:期待查找的内容;返回值:若找到,返回其下标,若未找到返回-1
>>> s.find('ef')
4
2.index()
index:n. 指标;指数;索引;指针vt. 指出;编入索引中vi. 做索引
功能同find();区别在于当未找到指定字符时返回报错
>>> s.index('x')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
3.replace()
取代,代替;替换,更换;功能,替换掉指定字符,参数(期待被替换的部分,期待替换的内容);返回值:替换后的字符串
这里我们要注意到,replace函数并不会修改我们原字符串的内容,而是将替换好的字符串作为返回值
>>> s
'abcdefg'
>>> s.replace('cd','12')
'ab12efg'
>>> s
'abcdefg'
4.split()
vt. 分离;使分离;劈开;离开;分解;参数:作为分割符的字符,返回值:按照分隔符分割号的字符串列表
>>> s2 = '小红,小绿,小蓝'
>>> s2.split(',')
['小红', '小绿', '小蓝']
4.List列表
List列表即一个有序集合,其实字符串也是一个特殊的List,其每个元素都是一个字符而已,而List的元素可以是多个字符,乃至数字,甚至图片等
>>> # list有序集合
>>> classMates = ['lsw','z3','l4']
>>> type(classMates)
<class 'list'>
>>> len(classMates)
3
>>> classMates[0]
'lsw'
>>> classMates[-1]
'l4'
1.List列表常用的操作函数
1.append()
在列表末尾添加元素
>>> classMates.append('w5')
>>> classMates
['lsw', 'z3', 'l4', 'w5']
在指定位置添加元素
>>> classMates.insert(2,'m6')
>>> classMates
['lsw', 'z3', 'm6', 'l4', 'w5']
2.pop()
删除元素;当参数为空时默认删除最后一个元素;返回值:被删除的元素
['lsw', 'z3', 'm6', 'l4', 'w5']
>>> classMates.pop()
'w5'
>>> classMates.pop(2)
'm6'
>>> classMates
['lsw', 'z3', 'l4']
2.List列表的嵌套使用
当嵌套使用时,若用len()进行计数其列表元素也视为与其他元素平级元素
>>> Courses = ['cn','en',['c','java'],'math']
>>> len(Courses)
4
5.Tuple元组
元组和列表很相似,它也是一组有序的元素集合,但它的内容是不允许被修改的
仅有一种特殊情况:即元组的某个元素为List列表的时候
l = ['A','B']
c = ('a','b',l)
c[2][1] = 'C'
原理如图:
6.Dict字典(Dictionary)
字典的结构为{key:value,k2:v2,k3:v3…}
>>> d = {'z3':90,'l4':78,'w5':97}
>>> type(d)
<class 'dict'>
字典并不是一个顺序结构
我们可以判读,一个Dict中是否有这个key
>>> 'z3' in d
True
>>> 'lsw' in d
False
>>> d.get('z3')
90
>>> d.get('lsw')
# 对于get方法,若没有这个值则不会返回结果,或者我们可以设置一个返回结果作为参数
字典的优势
查找和插入的速度很快,但字典相比较List数组会占用更多的内存
7.Set集合
set集合是一个无序的集合,它会过滤掉重复的元素
>>> s = set([1,1,2,2,2,3,3,])
>>> s
{1, 2, 3}
这个set集合可以用&取交,用|取并
>>> s1 = set([1,2,3])
>>> s2 = set([3,4,5])
>>> s1 & s2
{3}
>>> s1 | s2
{1, 2, 3, 4, 5}
总结:
至此,基本包含了我们常用的所有数据结构,如果学习过其他语言的话,就能发现,Python的数据结构总体同其他语言并没有本质上的差别,只是没有那么详细的划分,对于使用者而言,更简单,值得注意的区别就是,Python并不要我们在使用某个变量前声明这个变量的数据类型,通常是直接赋值就已经决定了这个变量的数据类型了,并且后续当我们再次对这个变量赋值时,它的数据类型也会被覆盖,本次学习给我印象最深的就是List列表和Tuple元组的区别,还有那个元组内嵌套了List列表,而修改这个被嵌套的列表中的值看似违背了元组元素不可修改的原则,实则是因为元组中的元素是列表是,存储的是指向列表地址的指针,修改数值并不会引起列表地址的变化。
另一个重点是List列表的两个常用函数pop()和append(),应该熟练掌握。pop()函数是有返回值的,它的返回值就是被删除的那个元素。