入坑Python之 你在学些什么?
一,Python是什么?
python是一种解释型计算机语言,基于C语言基础上的弱类型语言.
二,print打印
我们要编写的第一个代码就是
print("hello word")
计算机显示会出来hello word,让你感到计算机执行你的命令,据说,几乎所有的编程语言第一句话就是这个,会打出来这句话,恭喜你,入坑了!~~
附加:print的基本运用
在打印里面
self 表示你输入的字符都是他自己
*args 位置参数,在函数文章有些,可以接受到无数形参的传值
sep 就相当于打印出来默认的是 " " ,如果你要修改默认参数的话,会以一个下划线相加拼接
print('let\'s go',"哈哈",sep = "_") #结果:let's go_哈哈
end 结尾默认是"\n" 如果你要修改的话直接把默认值修改就可以了,近期的话文件操作会用的到的
file 文件 默认是没有的 如果你要不觉得麻烦的话 你可以open吧文件边读边写进去比如
print('let\'s go',"哈哈",sep = "_",file=open('F:\我是.txt' ,"a"))
最后提醒一下 新手最容易失误的就是在编码的时候误用了中文标点符号.切记!
三,变量(命名规则)
在编程中,最长用到的其实最重要的就是变量了!
变量是一种使用方便的占位符,就和数学小的时候学的xy一个意思
变量的命名规则:
1,由字母,数字,下划线组成
2,不能数字开头,更不能是纯数字
3,不能是关键词
4,不要太长
5,不要用中文
6,区分大小写
7,要有意义
8,建议使用驼峰体或者下划线
(有变量就会有常量: 全部字母大写常量. 约定俗成)
四,数据类型
0.0 int 整数
bit_length()计算这个数在二进制中的长度
+ - * / 加减乘除 **次幂 //地板除 < > !=不等于
a = 9 print(a.bit_length())
来计算整数在内存中占用的二进制码的长度
在32位机器上int的范围是: -2**31~2**31-1,即-2147483648~2147483647
在64位机器上int的范围是: -2**63~2**63-1,即-9223372036854775808~9223372036854775807
够你用了吧. 注意这些是整数
1.0 str 字符串
用" "表示,' ',也可以这些引起来的就是字符串,可以保存少量数据并进行相应的操作
字符串可以用单引号,双引号,或者三引号引起来,没有什么区别,只是这些特殊的格式需要的引号
#字符串的拼接
#字符串的拼接 s1 = 'a ' s2 = 'bc' print(s1 + s2) #相乘 str*int name = '坚强' print(name*8)
如果让两个数相加,那么python就会直接告诉你
但是如果数字两边都加了引号
>>>"5"+''8''
>>>"58"
要告诉你,python在创建一个字符串,就要在字符串两边加上引号,可以是单引号或者双引号,python表示在这一点上面不挑剔.但是必须成对,你不能一边用单引号,一边用双引号结尾,这样python就不知道你要干什么了.
print("python 我爱你哟~') #结果EOL while scanning string literal
这个就有点像你,一遍跟python说我爱你,却一边搂着小c,所以面对这么完美的语言,我们不写不别扭的语法.
那么如果字符串需要内容中需要单引号或者双引号怎么办?
print('let's go') #结果:invalid syntax 语法错误
像上面两种方法,第一种比较常见,就是使用转义符号(\)对字符串中的引号进行转义.
print('let\'s go')
还有就是一种方法就是利用python 既可以用单引号,也可以用双引号表示这一个字符串的特点,只要用上不同的引号表示字符串,那么python就不会误解你的意思了~
1.1切片和索引
指向每一个字符,字符都有一个唯一的下标
切片:
[start:end:step]
start 起始位置
end 结束位置
step 步长
1.2方法
upper() 把字符全部转换成大写
stirp() 去空白
replace() 替换
strartswith() 是否以xxx开头
find() 查找 index查找() 区别:index找不到会报错,find找不到会返回-1
count()计数
isdigit() 判断是否是数字
len() 长度
jion() 把列表拼接成字符串
1.3编码
encode(编码)
decode()解码
ASCII 8bit 1byte
GBK 国标码 GB2312 16bit,2byte 因为国标码向下兼容ASCII码 所以是英文1byte
Unicode 万国码 32bit 4bit
UTF-8 可变长度的ASCII码
英文:1byte
欧洲:2byte
中文: 3byte
编码之后数据bytes 用dicode()解码
1.4. 格式化输出
前面讲了字符串大部分方法,唯独漏了 一个format()方法因为我觉得format()方法和格式化话题有点如出一辙,都是关于格式化输出,所以一起说一下.
什么是字符串格式化?哪里会用到呢?
当我们写代码写的多的时候,就会觉得总是输出一样的东西,都差不多,那就简单了直接格式化就可以了,格式化字符就是按照统一的字符规格去输出一个字符串,如果规格不统一,就可能会造成误会,例如16进制的10和十进制的10或者二进制的10都是不一样的,字符串格式化,正是帮助我们矫正并规范着类问题而存在的.
1.4.1 format()
这个方法是可以接收位置参数和关键字参数的(函数有说明) 两者传递到一个叫作replacement 字段.而这个reliacement字段在字符串中内由大括号表示
print("{1}6666666{0}".format("你好","我叫赛利亚"))
#结果:我叫赛利亚6666666你好
如果要把{}打印出来,你可以用(\)转义,只需要用转义字符本身(\\)
1.4.1格式化%
符号 | 含义 |
%c | 格式化字符及其他ASCII码 |
%s |
格式化字符串 |
%d | 格式化整数 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号的十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数的精度 |
%e | 用科学技术法格式浮点数 |
%E | 和是上面方法一样 |
%g | 根据值的大小决定使用%f或者%e |
%G | 上面方法一样 |
附赠:python转义字符及含义
python部分转义符已经使用了,是时候和他来一个了断了
符号 | 说明 | 符号 | 说明 |
\' | 单引号 | \r | 回车符 |
\" | 双引号 | \f | 换页符 |
\a | 发出系统响铃声 | \o | 八进制数代表的字符 |
\b | 退格符 | \x | 十六进制数代表的字符 |
\n | 换行符 | \0 | 表示一个空字符 |
\t | 制表符tab | \\ | 反斜杠 |
\v | 纵向制表符 |
2.bool 布尔值
取值只有True, False. bool值没有操作
0是False 非0是True
类型转换:
False: 0, '', None, [], {}, tuple(), set()
True: 除了上面的都是True
int_1 = 1 str_1 = "2" "str => int " int(str) "int => str " str(int) "int => bool" bool(int) #0是False 非0是True "bool=>int" int(bool) #True是1, False是0 "str => bool" bool(str) #空字符串是False, 不空是True "bool => str" str(bool) #把bool值转换成相应的"值
3.0 list 列表 [ ]
列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. 比如JS中的数
组, java中的数组等等. 它是以[ ]括起来, 每个元素以' , '隔开并且可以存放各种数据类型:
lst = [1, '哈哈', [1,8,0,"百度"], ("我","叫", "元", "组"), "abc", {"我叫":"dict字典"},{"集合","集合"}] print(lst)
列表相比于字符串. 不仅可以存放不同的数据类型. ⽽且可以存放⼤量的数据. 32位python可以存放: 536870912个元素,64位可以存放: 1152921504606846975个元素.并且列
表是有序的(按照你保存的顺序),有索引, 可以切片便取值
3.1 列表的增删改除
3.1.1 增加
list.append()在列表后面追加
lis = ["我不是药神","你好北京","爱情公寓","流年"] lis.append("胡桃夹子") print(lis) #结果:['我不是药神', '你好北京', '爱情公寓', '流年', '胡桃夹子']
list.insert()在列表指定索引地方添加元素
lis = ["我不是药神","你好北京","爱情公寓","流年"] lis.insert(1,"我不是潘金莲")#在第1项添加元素 print(lis) #结果:['我不是药神', '我不是潘金莲', '你好北京', '爱情公寓', '流年']
list.extend(Iterable可迭代对象) 迭代添加
lis = ["我不是药神","你好北京","爱情公寓","流年"] lis.extend("哈哈哈哈") #迭代添加 print(lis) #结果:['我不是药神', '你好北京', '爱情公寓', '流年', '哈', '哈', '哈', '哈']
3.1.2 删除
这个方法一共四种,我们来看一下吧:
list.pop(0) 把第0个元素弹出去
lis = ["我不是药神","你好北京","爱情公寓","流年"] lis.pop(0) print(lis) #结果['你好北京', '爱情公寓', '流年']
list.remove("需要删除的列表中的词")删除指定元素
lis = ["我不是药神","你好北京","爱情公寓","流年"] lis.remove("爱情公寓") print(lis) #结果:['我不是药神', '你好北京', '流年']
还有一种,但是要注意del是一个语句,不是一个列表的方法,所以不必再后面加小括号().另外如果你想要删除整个列表,还可以用del加列表名删除.
lis = ["我不是药神","你好北京","爱情公寓","流年"] del lis[:2] print(lis)#['爱情公寓', '流年']
最后一种办法list.clear()清空列表
lis = ["我不是药神","你好北京","爱情公寓","流年"] lis.clear() print(lis) #结果:[]
3.1.2删除的坑:
如果不用clear清空列表的话,for循环是删不干净的,因为他是根据索引来进行删除的,可是当我第0项挪过来的时候,排在第一个往前挪,所以删除的话是会剩下的,若要用for的办法需要这样写:
lis = ["我不是药神","你好北京","爱情公寓","流年"] lst = [] for i in lis : lst.append(i) for el in lst : lis.remove(el) print(lis) #结果:[]
3.1.3 更改
上面讲了这么多办法,更改的你应该已经了解了索引了,所以更改的话你可以通过索引进行更改
lis = ["我不是药神","你好北京","爱情公寓","流年"] lis[0] = "世界末日" print(lis)
3.1.4查询
lis = ["我不是药神","你好北京","爱情公寓","流年"] print(lis[0])
for el in lis : print(el) #结果: 我不是药神 你好北京 爱情公寓 流年
3.3 列表的其他操作
count()计数
lis = ["我不是药神","你好北京","爱情公寓","流年","流年"] print(lis.count("流年")) #2
index()查找元素
lis = ["我不是药神","你好北京","爱情公寓","流年","流年"] print(lis.index("流年")) #3
但是如果输入一个错误的系统会报错:
lis = ["我不是药神","你好北京","爱情公寓","流年","流年"] print(lis.index("我是个神")) #ValueError: '我是个神' is not in list 这个元素不在这个列表中
sort()排序
lis = [1,2,93,54,8] lis.sort() print(lis) #[1, 2, 8, 54, 93]
reverse()翻转
lis = ["我不是药神","你好北京","爱情公寓","流年","流年"] lis.reverse() print(lis)#['流年', '流年', '爱情公寓', '你好北京', '我不是药神']
3.4拷贝
1. = 赋值操作. 没有创建对象. 两个变量使用同一个对象.
2. 浅拷贝. 只拷贝一层. list.copy(), list[:]
3. 深拷贝. 和这个对象相关的内部信息全部拷贝一份. deepcopy() 原型模式
3.5 推导式
[结果 for循环 if判断]
4.0 tuple 元组
元组: 俗称不可变的列表.被成为只读列表, 元组也是python的基本数据类型之一, 用小括号括起来, 里面可以放任何数据类型的数据, 查询也可以. 循环也可以. 切片也可以. 但就是不能改
元组中如果只有一个元素. 一定要添加一个逗号, 否则就不是元组
dict 字典 [key:velue]
用大括号{} 括起来. 内部使用key:value的形式来保存数据
{'jay':'周杰伦', "jj":'林俊杰'} 注意:字典的key必须是可哈希的. 不可变的, value 没有限制 不是按照我们保存的顺序保存的, 无序的
网址: https://www.cnblogs.com/zhaodingding/p/9620086.html
set 集合
特点: 无序, 不重复, 元素必须可哈希(不可变)
作用: 去重复 本身是可变的数据类型. 有增删改查操作.
frozenset()冻结的集合. 不可变的. 可哈希的
python中集合的运算:https://www.cnblogs.com/zhaodingding/p/9688495.html
五,用户交互
使用input()函数,可以让我们和计算机互动起来
a = input("请输入你叫什么") print(a)
显示就会出来你输入的内容
六,流程if语句
if的话,就像回家,我是应该走大道还是走小道,大道会遇到什么,小道的话会遇到什么.其实用if公式说实话,很皮的可以做很多事情,比如diss不会编程的人
学了这个突然有了学习的兴趣,毕竟皮一下很有趣哟~
if的话有三种语法:请拿好小本本记上~~~~
第一种语法:
if 条件: #引号是将条件与结果分开。
结果1。 # 四个空格,或者⼀个tab键,这个是告诉程序满⾜这个条件的
结果2。
如果条件是真(True) 执⾏结果1, 然后结果2, 如果条件假(False) 直接结果2
a = int(input("请输入一个数字")) if a == 1: print("你回答的是1") print("你回答的是其他的")
如果你输入的是1的话,他就会执行if条件后面的话
第二种if语法:
a = int(input("请输入一个数字")) if a == 1: print("你回答的是1") else: print("你回答的是其他的")
按照刚才的输入,就直接回答你输入的是1,没有你回答是其他的那句话了==
第三种if语法:
a = int(input("请输入一个数字")) if a == 1: print("你回答的是1") elif a ==2: print("你回答的是2") else: print("你回答的是其他的")
就和超市购物一样,如果你有100元去超市,你可以购买老干妈八罐,如果你有50,你可以购买几包乐事薯片,如果你有10元,你可以购买俩个冰棍.
如果你有5毛,你可能只能吃卫龙了......这个看你主要的条件是什么!
第四种if语法(嵌套):
if gender == '女的': age = input("你多大了啊?") # 年龄大于60就不开门了. 小于60可以考虑 if int(age) < 60: print("请进") else: print("大妈您去隔壁看看金老板") else: print("不开不开我不开!")
可以⽆限的嵌套. 但是在实际开发中. 尽量不要超过三层嵌套
七,流程控制-while循环
这个东西很棒的!作为一个小喷子,恨不得给他们装上轰炸机,那我们就可以用Python模拟一个轰炸机一样的东西,这个就叫while,一直循环一句话,就问你怕不怕!服不服!
循环的听一首歌:你试试?
while True: print("你是我的小啊小苹果") print("怎么爱你都不嫌多") print("小苹果啊!小苹果!")
如果条件是真, 则直接执行结果. 然后再次判断条件. 直到条件是假. 停止循环
一直听这首歌曲,总有腻了的一天.那怎么办呢?
结束循环:
1,改变条件.
2,break
结束循环,break
八,流程控制-break和continue
1, break: 立刻跳出循环. 打断的意思
比如我要歌曲停止,需要摁暂停键这个东西就是break的意思....
while 1 : print("我很皮对不对") break
结果他就出现一遍了,就没有然后了.....为了能有一个回复我就得这样回答!~
2, continue: 停⽌本次循环, 继续执⾏下⼀次循环
while True: s = input("请开始喷:") if s == 'q': break # 停止当前循环 # 过滤掉晓梅 if "晓梅" in s: # 在xxx中出现了xx print("你输入的内容有少儿不宜. 不能输出") continue # 停止当前本次循环. 继续执行下一次循环 print("喷的内容是:"+s)
请get这个技能~~~