Python3基础使用范本

参考与评述

本文参考书目为《Python基础教程第三版》
从类C语言转而学习Python让我尤为不适应,C语言更能体现硬件底层的细节,而Python相对来说让这些细节变得十分模糊。经过一定的思考后我发现Python的优雅之处恰恰就是屏蔽了这些细节,让编程变得十分简洁高效。Python不像C那样很直白地跟底层接轨,恰恰相反,Python更热衷于跟程序员接轨,因此在学习Python的过程中,不必在意太多被封装了的细节,简单无脑调包才是Python的最大魅力之处。


一、常见难点运算符

1. 整除运算: print(3//2)

2. 求幂运算: print(3**2) 相当于 32 3 2

3. 16,8,2进制的表示: print(0xAF,010,0b0101)

4. 取绝对值: print(abs(-1.2))

5. 浮点数取近似整: print(round(2/3))

6. 浮点数向下向上取整:

import math
print(math.floor(32.9)) #相当于int(32.9)
print(math.ceil(32.1)) #向上取整

二、部分字符串操作

1. 跨越多行的字符串:

print('''asdasd
asdasdas
xxxx''') #用三引号分界,Python3使用的所有字符串都是Unicode字符串

2. 转义符:
print('C:\\nowhere') 使用\作为转义符

3. 原始字符串(不用转义符实现):
print(r'C:\nowhere')

4. 字符编码:
'Hello,world!',encode('UTF-8') 转化成UTF-8编码返回二进制字符
只要用encode就能将某个字符串编码为二进制字符。这些二进制字符再decode以下就能得到原来的字符串。

5. 可变字符串:
python中若定义str=’hello’那么str中的字符是不可变的,即便是二进制类型str=b’hello’也是不可变的,如果需要可变二进制字符串,可用如下。

str=bytearray(b'hello')
str[1]=ord(b'u')
pint(bytes(str)) #这样又转回了bytes类型二进制字符串

6. 精简字符串格式化:
str="hello %s,%d" % ('world',1) 与C类似
或者 str="hello {0},{1}" .format('world',1)注意这里{i}中的任意i都能重复出现。
或者 str="hello {a},{b}" .format(a='world',b=1)
还可以 str="{foo} {0} {bar} {1}".format(1,2,bar=4,foo=3)

7. 限定宽度格式化:
'haha{num:10}'.format(num=3)限定num这块字符串宽度为10,注意数字右对齐,字符串左对齐。
如果要同时限定浮点数宽度和精度,则可以用类似{pi:10.2f}。(pi位别名)
如果在限定浮点数宽度和精度基础上再用0填充,则可用类似{pi:010.2f}

8. 格式化对齐:
str="{0:<10}\n{0:^10}\n{0:>10}" .format('world') 限定10宽度,分别位左,中,右对齐。

9.填充字符:
'hello {0:%^15}'.format('world!') 输出为’hello %%%%world!%%%%%’ 。

10. 填充字符放在符号与数字之间:
print( '{0:10.2f}\n{1:=10.2f}'.format(pi,-pi) )输出结果如下

      3.14
-     3.14

11. 字符串方法:
"hello".center(38) 指定宽度居中对齐。
"hello".center(38,“*”) 指定宽度居中对齐,并且指定填充符号。
string.find('xx') 串匹配,返回首匹配项索引,失败返回-1。
string.find('xx',1) 串匹配,指定起点。
string.find('xx',1,10) 串匹配,指定起点和终点。
'+'.join(['qwe','asd','xzc']) 指定字符串连接,输出’qwe+asd+xzc’
str.lower() 返回小写
'This is a test'.replace('is','eez') 替换,输出’Theez eez a test’
'1+2+34+5'.split('+') 拆分返回列表,这里输出[‘1’, ‘2’, ‘34’, ‘5’]
' haha haha '.strip() 删除开头和末尾空白,这里输出’haha haha’。
'& haha%haha % '.strip('& %') 指定删除开头和末尾的字符,这里输出’haha%haha’。


三、列表和元组

1. 列表和元组:
列表是可以修改的,元组不可以修改。可以推断元组在内部使用的结构更简单且更高效。
Python中的列表中能包含许多数据类型,而且是不同的数据类型,这与C的数组差异极大。

2. 列表的嵌套使用:

edward=['Edward Gumby',42]
john=['Join Smith',50]
database=[edward,john]
#得到 database=[['Edward Gumby', 42], ['Join Smith', 50]]

3. 索引:
Python中的索引都是以0开始,且可以为负值,相当于一个循环索引(-1表示最后一个元素)。

l=['hello',24,'gg']
l[0] #输出'hello'
l[0][1] #输出'e'

4. 切片:
对于上述l列表,如果我要一次性取出前两个,那我不需要迭代索引,用切片即可。
l[0:2] #这里 0:2 代表的索引范围是 0 <= i < 2 。当然,如果 :省去左右部分即取到两端。
如果需要取值步长还可以写为 l[左端点:右端点+1:步长],如 l[0:10:2]步长即为2。

5. 某串是否存在与另一串之中:
str=’ssrwxx’
‘rw’ in str #返回True,这里关键字为in。
当然,对于l=[‘ssrwxx’,256]这种,’rw’ in l 就返回False了,由于这个in只对最上一层起作用,因此如果是’ssrwxx’ in l 就能返回True了。
我们很容易用这个操作来检查用户名以及密码。

database=[
    ['user1','pwd1'],
    ['user2','pwd2']
]
username=input('User name:')
pwd=input('pwd:')
if [username,pwd] in database: print ('Access granted')

6. 列表中元素个数、最大值、最小值:
分别为 len(l),max(l),min(l),其中最大值和最小值必须保证列表中元素类型一致。

7. 字符串变列表:
list(‘Hello’) 输出即为 [‘H’, ‘e’, ‘l’, ‘l’, ‘o’]

8. 列表按索引更改:
这个操作跟C类似,即list[索引]=你想设定的值。

9. 列表按索引删除:
del list[索引值] ,非常方便!

10.切片赋值:
name[2:]=list(‘ar’) 这样可以将串name第二个字符之后的所有变成ar

name=list('abcdefg')
name[2:]=list('ar') #得到['a', 'b', 'a', 'r']

切片操作还能够实现删除、插入,注意 list[1:1]=..为将list[1]之前处插入列表。

11.列表方法:
list.append(input) 附加到列表末尾,单元素。
list.clear() 就地清空列表。
b=a.copy() 创造出一个与a一模一样的b,注意b=a只是拷贝了指针。
[1,2,1,1,2,1].count(1) 计数。
a.extend(b) 将列表b附加到列表a末尾,多元素,就地执行,a+b效率比这个低。
[1,22,32,44].index(22) 返回1,即根据内容找索引。
[1,2,3,6].insert(3,'four') 在第3个元素之前插入’four’。
[1,2,3,6].pop(0) 删除0号,返回被清除值,如果不指定编号则取出最后一个元素。
list.remove('xx') 按内容删除。
list.reverse() 就地逆置。
list.sort() 就地排序,若要赋值,则用a=sorted(b)。
x.sort(key=len) 按长度排序。
x.sort(reverse=True) 递减排序。

12. 列表转元组:
tuple([1,2,3]) = (1,2,3)

13. 列表的浅拷贝和深拷贝:

a=['hello',123]
b=a    #浅拷贝
b=a[:] #深拷贝

四、字典

1. 创建字典:
字典就是一个个键:值对,如dic={'a':123,'b':'hello','cc':'world'}
也可以用映射创建字典,dic=dict([['a','b'],[123,'x']])
还可以这样,dic=dict(a=123,b='hahaha')
当然字典也可以嵌套{ 'a':{'a1':0,'a2':1},'b':{'b1':'haha','b2':23} }

2. 字典的成员资格:
如果dic={'a': 123,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值