【python 心得 by yyq】

1.进制转换
使用int方法可以将其他进制转换为十进制
实例:int(‘12’,10)//第二个参数表示你当前的进制位,第一个参数是需要转为十进制的参数。
2.isalpha()
n.isalpha()方法判断n是否为字母//无论大小写
3.python 标准库math中的pow()方法用于求一个数的n方
例如:pow(3,3) //代表3的三次方
4.print(str(a1[i]) + ' ',end="")//print 方法里面加上参数end="" 表示不换行,默认是换行的。
5.在input的时候,不能在input()之前加上任何类型转换
6.判断一个字符是否在另外有个字符里面方法:
(1)r'x' in r'xxxxx'
(2)xasas.find(a)
7.判断奇数或偶数,num%2 ==0 为偶数反之为奇数
8.list.sort(cmp=None, key=None, reverse=False) list 排序语法
其中reverse 为 FALSE 为默认升序排序
再就是如果reverse 为True 的话则为降序排序
9.a是一个list 然后我们要对立面的数进行运算,max(a)求列表a的最大值 min(a)求列表a的最小值 sum(a)求列表a 的值得数字和
10.判断一个list是否已经排序,使用sorted() ,记得这里需要额外判断正序和倒序
11.求和时候可以使用高斯公式,如果直接使用for循环求和的话,时间复杂度很高(O(n))
12.写题的时候都遇到while循环,try except
13.判断三条边是否可以组成一个三角形(任意两条边的和大于第三边,转换成计算机语言为:and)
14.python 中去重复,假定有一个list (有重复项)list_name = list(set(list_name))
15.在Python中没有switch – case语句。
16.input()键盘输入的时候可以指定类型
n=int(input())
17.print(r''n) // 可以打印多个
18.chr(i) 输出对应的ASKII码
19.#coding=utf-8 其实等价于 # -
- coding:UTF-8 --
20.python 中代码可以加分号,但不符合规范
21.python中一个文件就是一个模块啦
一个模块中想要使用另外一个模块的成员的时候,有以下几种方法:
m1模块 m2为另外一个模块,m2中有成员x
(1)import m2
(2)from m2 import x
(3)from m2 import x as s
22.python内置数据类型为:布尔、数字(整型、浮点型)、字符串、列表、元组、字典、集合
【数字】
整型进制表示
十进制:正常
二进制:0 1 表示
十六进制:0X开头表示
八进制:0O开头表示
浮点:在python中仅仅有双精度浮点(占8字节,16位有效保留位)
e(E)用来表示10的次幂---科学计数法
复数:python是少数可以表述复数的语言,所以应用在统计领域很多
布尔:True False
数字类型之间的转换分为强转换和隐式转换
强转换为(int()\float()\bool())
隐式转换为主要发生在数字之间,规律为“谁大,转的时候就为谁”
23.a//b 表示地板除法,求小于a于b商的最大整数
24.比较运算符可用于任意类型的数据,但两端数据要相互兼容,既可以隐式转换
25.python中的逻辑运算符一共有三种:
and 逻辑与
or 逻辑或
not 逻辑非
python的逻辑运算符采用了短路的设计
短路指的是:逻辑或 逻辑与 在计算过程中只要结果确定了,则不在再计算后面的表达式了,从而提高效率,有点像电路短路。
26.位运算是以二进位(bit)为单位进行运算的,操作数和结果都是整数类型的数据。【这里补码反码啥的需要注意】
27.赋值运算有很多
//=
*
=
等等不需要惊讶
28.算数运算符>位运算符>关系运算符>逻辑运算符>赋值运算符
29.listdata.remove(maxdata) // 可以删除list 中的元素,通过值删除,前提是这个值必须存在!
30.字符串反转特性:
str1 = 1234
str2 = str1[::-1]
str2 = 4321
31.list 判断一个元素是否在list中 ,if datalist.count('value') > 0: xxx;
32.for 以及 while 中可以有else
else 子句需要在循环体正常执行完成以后才会执行,如果遇到break 或者return 就不会执行。
33.容器型数据结构
【序列】【集合】【字典】
下面先说序列:
是一种可迭代、元素有序的容器类型的数据。
序列包括:list、str、元组(tuple)、字节序列(bytes)
[序列的索引]
H E L L O
0 1 2 3 4 // 正序列
-5-4-3-2-1// 反序列
[序列的加乘操作]
加(+)可以将两个序列连接起来
乘(*)可以将两个序列重复多次
图片说明
[序列的切片语法]
格式:[start:end:step]左闭右开区间
步长为负值,则从右往左;步长为正值,则从左往右
步长默认为1

[list]
通过list(‘迭代元素’)方法可以创建列表
追加单个:append(x)
追加多个:extend(t) // t为列表对象
在python 中方法和函数是有区别的
方法:隶属于类,可以被类或者对象调用 例如:list.append(x)方法
函数:不属于任何类,可以直接调用,例如:list()函数
插入:
list.insert(x,i)方法// x是索引;i是待插入元素
替换:
= 替换//直接对下标赋值
删除:
list.remove(x)//针对值删除。一次只删除一个,如果匹配到多值,则只删除第一个

[tuple]元组是一种不可变序的类型
创建元组:
tuple(里面是可迭代的对象) 函数
(元素1, 元素2, 元素3, 元素4 ... )
注意:创建只有一个元素的元组:tuple=t,元组后面的逗号不可以省略
通过()创建空元组
创建元组相当于把数据打包进元组里面,这个过程成为元组的打包
元组拆包:
与元组打包相反,就是将元组中的元素取出,分别赋值给不同的变量
直接使用 =
x,y=(23,'er')
在python中,所有的容器类型都可以存储不同类型的数据

[set]集合是一种可迭代的、无序的、不能包含重复元素的容器类型
创建集合:
两个方式:
1.set(迭代对象)函数,
2.{元素1,元素2,元素3,...}:指定具体的集合元素,元素间以逗号分隔
修改集合:
1.修改集合类似于修改列表,可以在其中插入和删除元素。
2.add(元素)//方法 添加元素,如果元素存在则不能够添加,不会抛出错误
3.remove(元素) //删除元素,如果元素不存在,则抛出错误。
4.clear() //清除集合

[dict]字典是一种使用键值对存储数据的数据库结构:key不可以重复;value可以重复;键值对使用:隔开键值对之间使用,隔开
创建字典:
1.dict(字典)//函数 , 参数是一个字典
2.{key1:value1,..,keyn:valuen} // 枚举法
修改字典是对key 和value 同时操作的,对字典的修改都是添加,替换,删除
通过索引赋值的形式直接对指定dict[key]进行赋值,替换、增加(如果有就替换)
通过dict.pop(key)方法删除指定key与之键值对
访问字典的试图:
items() //方法 ;返回所有键值对的视图
keys()//方法 ;返回所有key的视图
vlaues()//方法 ;返回所有value的视图
遍历字典:
可以单独遍历keys视图
也可以单独遍历values视图
也可以同时遍历
for x in dict.keys():
for x in dict.values():
for x , y in dict.items():

总结:
序列元素是有序的,其中列表是可变的,但是元组不可变
集合元素是无序的,且不能够重复。
字典通过键来访问元素,由key:value构成,keys()不可以包含重复元素

34.字符串
[表示]
普通字符串:单引号 双引号表示 ;
如果字符串中包含单引号就用双引号括起来这样就不用转义了,反之:如果想要包含双引号就是用单引号括起来就不用转义了。
字符串中的字符采用Unicode的编码表示
长字符串:在实际开发中,r'xxx' 在字符串前面加上一个r就可以了,里面的内容就不会被转义
原始字符串:使用三个单引号或者是三个双引号括起来,里面可以排版可以换行,贼方便。~

【python 连接mysql数据库 --- pymysql】
#!/usr/bin/python3

import pymysql

打开数据库连接

db = pymysql.connect("localhost","testuser","test123","TESTDB" )

使用 cursor() 方法创建一个游标对象 cursor

cursor = db.cursor()

使用 execute() 方法执行 SQL 查询

cursor.execute("SELECT VERSION()")

使用 fetchone() 方法获取单条数据.

data = cursor.fetchone()

print ("Database version : %s " % data)

关闭数据库连接

db.close()

[其中connect的参数列表为]
host=None, # 要连接的主机地址
user=None, # 用于登录的数据库用户
password='', # 密码
database=None, # 要连接的数据库
port=0, # 端口,一般为 3306
unix_socket=None, # 选择是否要用unix_socket而不是TCP/IP
charset='', # 字符编码
sql_mode=None, # Default SQL_MODE to use.
read_default_file=None, # 从默认配置文件(my.ini或my.cnf)中读取参数
conv=None, # 转换字典
use_unicode=None, # 是否使用 unicode 编码
client_flag=0, # Custom flags to send to MySQL. Find potential values in constants.CLIENT.
cursorclass=, # 选择 Cursor 类型
init_command=None, # 连接建立时运行的初始语句
connect_timeout=10, # 连接超时时间,(default: 10, min: 1, max: 31536000)
ssl=None, # A dict of arguments similar to mysql_ssl_set()'s parameters.For now the capath and cipher arguments are not supported.
read_default_group=None, # Group to read from in the configuration file.
compress=None, # 不支持
named_pipe=None, # 不支持
no_delay=None, #
autocommit=False, # 是否自动提交事务
db=None, # 同 database,为了兼容 MySQLdb
passwd=None, # 同 password,为了兼容 MySQLdb
local_infile=False, # 是否允许载入本地文件
max_allowed_packet=16777216, # 限制 LOCAL DATA INFILE 大小
defer_connect=False, # Don't explicitly connect on contruction - wait for connect call.
auth_plugin_map={}, #
read_timeout=None, #
write_timeout=None,
bind_address=None # 当客户有多个网络接口,指定一个连接到主机

--------------------------------------------------------------------------------------------2020年12月23日
【python 的内置数据类型】
python 是一种强类型语言,也是一种动态类型的语言;只能包含 下划线 数字 大小写。不可以用数字开头,但是下划线可以。(嘻嘻真的很变态)
布尔与数字运算的时候True 与 False 分别代表 1 与 0
两个**代表幂运算
数字自增自乘的时候运算效率会高一点
python 的函数和方法的区别,方法是在类里面的说法,而内置函数等等python原生自带的就叫做函数
【python 字符串】
三引号创建字符串一般用于多行的时候噢!
字符串中包含某种引号的时候,需要用另外一种引号去包含它!
字符串前面加r 里面的转义字符就不会转义噢~
字符串与其他类型的转换;int() float() bool('如果里面是空串则返回false;如果里面是非空串则饭会true')
自增运算符可以应用到字符串相加
字符串可以乘以一个数字,然后就可以复制N倍(数字倍)
字符串0开头,如果反过来,则用-1取
字符串反转strs[::-1]
字符串常用函数len()\split(分割 分割成一个list)\strip(去除,以特定形式去除)\upper(大写)\lower(小写)\capitallize(首字母大写)\replace('被替换的','被替换成')\count(计数)\startwith(以啥开头;返回布尔)\endwith('以什么结尾;返回布尔')\find('查找从什么位置开始有这个字符串的')\str.join('列表')可以将列表合并到一起噢~
【python 列表】
列表元素可变
[]、list('里面一般放字符串,然后可以转换成list 噢~')
切片语法和字符串差不多噢,几乎一样
列表同时赋值[:2]//同时为前两位赋值
list.extend(list1)//列表合并
list.append(x)//追加元素
list.pop(x)//删除指定位置的元素
list.del(x)//删除指定值的元素
list.insert('位置','值')
list.sort()//快速排序
使用in 关键字来判断字符串是否在list中,如果是返回True 反之 False
list.count('查询元素出现的次数')
list.index('查询元素出现的位置')

【python错题1】
题目:
求以下程序输出:

-- coding:utf-8 --

def test(a, b, *args):
print(a)
print(b)
print(args)

test(11, 22, 33, 44, 55, 66, 77, 88, 99)

解释:
def test(a,b,args)
a,b位置参数;
args为不定长位置参数,传入的参数被放入一个元祖里。
所以,a,b分别被赋值11、22,而其他的数被存到一个元组里。

【python错题2】
info = {'name':'班长', 'id':100, 'sex':'f', 'address':'北京'}
age = info.get('age')
print(age)
age=info.get('age',18)
print(age)

求上述输出

解析:本题考查的是字典的 get 方法
dict.get(key, value=None)
当value的值存在时返回其本身,当key的值不存在时返回None(即默认参数)。

【python错题3】

解析:
1、虚数不能单独存在,它们总是和一个值为 0.0 的实数部分一起构成一个复数
2、复数由实数部分和虚数部分构成
3、表示虚数的语法:real+imagej。故A正确。
4、实数部分和虚数部分都是浮点数 B正确。
5、虚数部分必须有后缀j或J 后缀大小写均可,C错误。

其中B容易误解,指的是输出结果是浮点数。例子如下:

aa=123-12j
print(aa.real) # output 实数部分 123.0
print(aa.imag) # output 虚数部分 -12.0
结果:
123.0
-12.0

【python错题4】
list切片如果越界了,不会提示,但是如果是单纯的索引就会提示索引错误
索引提示indexerror,切片不提示

【python错题5】
题目:
foo = [1,2]
foo1 = foo
foo.append(3)

答案:
foo 与 fool 都是[1,2,3]
解析:
可变对象为引用传递,不可变对象为值传递。
第二行foo1 = foo,是将fool的地址赋予给fool,即foo与foo1指向内存中同一地址。
第三行当执行foo.append时,因为python中列表的值是可以变化的。所以就在原来的存放foo的内存地址改变了foo的值,由最初的[1, 2]变为[1, 2, 3]。由于foo1和foo 是指向同一地址空间的索引,所以当foo内存地址所存储的值被改变时,打印foo1时,foo1的值也变化了。

【python错题6】
python中主要存在四种命名方式:
1、object #公用方法
2、object #半保护
#被看作是“protect”,意思是只有类对象和子类对象自己能访问到这些变量,
在模块或类外不可以使用,不能用’from module import *’导入。
#object 是为了避免与子类的方法名称冲突, 对于该标识符描述的方法,父
类的方法不能轻易地被子类的方法覆盖,他们的名字实际上是
_classname
methodname。
3、
_ object #全私有,全保护
#私有成员“private”,意思是只有类对象自己能访问,连子类对象也不能访
问到这个数据,不能用’from module import *’导入。
4、_ _ object_ _ #内建方法,用户不要这样定义

全部评论

相关推荐

gcniz:一天写两千行你闹呢
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务