python3.x 基础一

1.python 格式化print

#/usr/bin/env python
#-*- coding: utf-8 -*-
#Author:jenvid.yang
# 连接符号+,可以连接多个变量或者需要描述内容,连接符号中间并不会产生空格
# 尽量不用连接符号+,每次连接需要开辟内存空间
print('hello' + 'world!')
print('hello' + ' world!')
# helloworld!
# hello world!


# 占位符,%s字符输出,%d整形输出,%f浮点型输出
# 常用,只开辟一次内存空间
num1=1
num2=2.2
num3=3
name='yzw'
print('num1 is %d, num2 is %f, num2 is %d, num3 is %f,name is %s' % (num1,num2,num2,num3,name))
# num1 is 1, num2 is 2.200000, num2 is 2, num3 is 3.000000,name is yzw
# 小数点保留0.2或者.2表示保留2位小数点
print('num2 is %0.2f, num3 is %.3f' % (num2,num3))
# num2 is 2.20, num3 is 3.000
# 占位符宽度,常用对齐,%n表示左边补空格+原字符串个数共占n,
print('name is %10s' %(name))
print('name is %8s' %(name))
print('name is %6s' %(name))
print('name is %s' %(name))
#name is        yzw
# name is      yzw
# name is    yzw
# name is yzw
# -号表示右边留空
print('name is %-10s,%d' %(name,num1))
# name is yzw       ,


# format格式输出,format(数值, '格式'),花括号表示输出顺序,与format里面变量一致
print ('{0} {1}:{2}'.format(num1,num2,num3))
# 1 2.2:3

print显示颜色

格式:\033[显示方式;字体颜色;背景颜色m 需要输出的内容 [\033[0m

 

-------------------------------------------
字体色     |       背景色     |      颜色描述
-------------------------------------------
30        |        40       |       黑色
31        |        41       |       红色
32        |        42       |       绿色
33        |        43       |       黃色
34        |        44       |       蓝色
35        |        45       |       紫红色
36        |        46       |       青蓝色
37        |        47       |       白色
-------------------------------------------
-------------------------------
显示方式 | 效果 ------------------------------- 0 | 终端默认设置 1 | 高亮显示 4 | 使用下划线 5 | 闪烁 7 | 反白显示 8 | 不可见
-------------------------------

 

 

 

2.while/for...else

  • break结束最近的循环
  • continue结束当次循环,继续最近循环的下一次循环
  • 其他语言好像没有else子句
  • 循环结束判断条件常用语循环体内最后增加技术方法
#/usr/bin/env python
#-*- coding: utf-8 -*-
#Author:jenvid.yang
count = 0
num2 = 2
while count < 3:
    num1 = int(input('pls guest a number:'))
    if num1 > num2:
        print('bigger')
    elif num1 < num2:
        print('smaller')
    else:
        print('bingo I am if else')
        break
    count+=1
else:
    print('I am while else')
# I am if else
# while循环内部只要成功执行一次,同级别else不执行
# pls guest a number:1
# smaller
# pls guest a number:3
# bigger
# pls guest a number:2
# bingo I am if else

# while循环内部if判断全失败,则执行else
# pls guest a number:1
# smaller
# pls guest a number:1
# smaller
# pls guest a number:1
# smaller
# I am while else

# for...else一样,记忆方法:while/for...else有且只有一个执行

3.模块sys

  • sys.path查看lib默认环境变量
>>> import sys
>>> l_env = sys.path
>>> for i in l_env:
...     print(i)
... 

/usr/lib/python35.zip
/usr/lib/python3.5
/usr/lib/python3.5/plat-x86_64-linux-gnu
/usr/lib/python3.5/lib-dynload
/usr/local/lib/python3.5/dist-packages
/usr/lib/python3/dist-packages
  • sys.path.append添加自定义路径
>>> print(sys.path)
['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']
>>> sys.path.append("/root/")
>>> print(sys.path)
['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages', '/root/']
  • 通过在/usr/local/lib/python3.5/dist-packages (ubuntu)下增加xxx.pth 加入自定义路径

 

root@T450:/usr/local/lib/python3.5/dist-packages# cat custom.pth 
/home/yangzhenwei
import sys
l_env = sys.path
for i in l_env:
    print(i)
print (sys.path) #默认全局环境变量

/usr/bin/python3.5 /root/PycharmProjects/S14/day02/sys_mod.py
/root/PycharmProjects/S14/day02
/root/PycharmProjects/S14
/usr/lib/python35.zip
/usr/lib/python3.5
/usr/lib/python3.5/plat-x86_64-linux-gnu
/usr/lib/python3.5/lib-dynload
/usr/local/lib/python3.5/dist-packages
/home/yangzhenwei
/usr/lib/python3/dist-packages

 

 

  • sys.argv[0]
  1. 如果是在命令行中执行,则返回一个空的字符串
  2. 在pycharm中执行,则返回当前py文件的全路径文件名
>>> cmd1=sys.argv[0]
>>> print(type(cmf1))
>>> print(type(cmd1))
<class 'str'>
>>> print(cmd1)
  1. 在命令行中执行py文件,取外部参数
import sys
print(sys.argv[0])
print(sys.argv[1])
print(sys.argv[2])

#python sys_mod.py  1 2 3
sys_mod.py
1
2

 

4.模块os

  • os.system执行shell命令,但是不保存结果
>>> import os
>>> cmd_res = os.system("df -h")
文件系统        容量  已用  可用 已用% 挂载点
udev            3.8G     0  3.8G    0% /dev
tmpfs           769M  9.5M  759M    2% /run
/dev/sda5       230G  214G  5.2G   98% /
tmpfs           3.8G   56M  3.7G    2% /dev/shm
tmpfs           5.0M  4.0K  5.0M    1% /run/lock
tmpfs           3.8G     0  3.8G    0% /sys/fs/cgroup
tmpfs           769M   72K  769M    1% /run/user/1000
>>> print(cmd_res)
0
  • os.popen执行shell命令,返回内存地址
>>> cmd_res1 = os.popen("df -h")
>>> print(cmd_res1)
<os._wrap_close object at 0x7ff0760c44e0>
>>> 
  • os.open().read(),执行shell命令,保存结果/返回打印内容
>>> cmd_res2 = os.popen("df -h").read()
>>> print(cmd_res2)
文件系统        容量  已用  可用 已用% 挂载点
udev            3.8G     0  3.8G    0% /dev
tmpfs           769M  9.5M  759M    2% /run
/dev/sda5       230G  214G  5.2G   98% /
tmpfs           3.8G   56M  3.7G    2% /dev/shm
tmpfs           5.0M  4.0K  5.0M    1% /run/lock
tmpfs           3.8G     0  3.8G    0% /sys/fs/cgroup
tmpfs           769M   72K  769M    1% /run/user/1000
  • os.mkdir 在当前目录创建一个目录,如果已经存在,则报错
  • mkdir(path, mode=511, *, dir_fd=None),可以指定os权限
  • os.rmdir 在当前目录删除指定目录,如果目录内有文件,则报错
  • 导入自定义模块
  1. 首先增加自定模块,准备导入day01_login_03.py
  2. root@T450:/usr/local/lib/python3.5/dist-packages# cat custom.pth
    /home/yangzhenwei
    /root/PycharmProjects/S14/day01/bin
  3. 导入到自定义py文件里面如果有相对路径,会自动变成本py的相对路径
    #/usr/bin/env python
    #-*- coding: utf-8 -*-
    #Author:jenvid.yang
    import day01_login_03

    usercontent = open('../config/users.inf', 'r') FileNotFoundError: [Errno 2] No such file or directory: '../config/users.inf'
  4. 暂时复制相关文件到相对目录
  5. python3.5 import_custom_mod_py.py
    pls input your name:alex
    pls input your password:
    your username or password is invalid,pls reinput!
    pls input your name:ale 
    pls input your password:
    your username or password is invalid,pls reinput!
    pls input your name:alex
    pls input your password:
    welcome login system alex
  6. pyc,预编译文/部分编译,第一次运行py文件会将结果存到该文件,二次运行比较源文件和编译文件时间戳,决定是否重新解释执行源文件

5.str.isdigit

  • 判断字符是否全部由数字组成,否则为false
  • >>> a='111'
    >>> a.isdigit()
    True
    >>> b='aa11'
    >>> b.isdigit()
    False

     

6.is(is not)运算符

  • 用于判断一个对象是否是某种类型
  • >>> type('11') is str
    True
    >>> a=[1,2]
    >>> type(a) is list
    True

     

root@T450:/usr/local/lib/python3.5/dist-packages# cat custom.pth
/home/yangzhenwei
/root/PycharmProjects/S14/day01/bi

 7.二进制位运算

  •  a 为 60,b 为 13
  • a = 0011 1100
    
    b = 0000 1101
运算符描述实例
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101
^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。
<< 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000
>> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111
  •  &真真为真,|真假为真,^相异为真,~真假互换,<<左移丢高补低,>>右移丢低补高

8.三元运算

  • 值=a if a > b else c,条件为真取a,否则取c
  • >>> a,b,c=1,2,3
    >>> a if a>b else c
    3
    >>> b if a<b else c
    2

     

 9.字符与bytes转换

  • str->encode->bytes,bytes->decode->str
  • 3.x网络传输必须是二进制,2.x可以是zifuchuan
  • 默认编码encodeing=('utf-8')
    >>> msg1='水电费水电费'
    >>> msg2='asdfasdf'
    >>> print(msg1.encoding=('utf-8'))
    b'\xe6\xb0\xb4\xe7\x94\xb5\xe8\xb4\xb9\xe6\xb0\xb4\xe7\x94\xb5\xe8\xb4\xb9'
    >>> print(msg2.encoding=('utf-8'))
    b'asdfasdf'
    >>> print(msg1.encode(encoding='utf-8').decode(encoding='utf-8'))
    水电费水电费

     

 10.数据类型list

  • 排序/反转操作原列表
  • pop默认弹出最后一个元素 
  • 赋值直接给下标
>>> city=[]
>>> city.append('guangzhou')
>>> city
['guangzhou']
>>> city.append('foshan')
>>> city
['guangzhou', 'foshan']
>>> city.insert(0,'dongguan')
>>> city
['dongguan', 'guangzhou', 'foshan']
>>> city[0]
'dongguan'
>>> city[0-1]
'foshan'
>>> city[-1]
'foshan'
>>> city.insert(1,'zhuhai')
>>> city
['dongguan', 'zhuhai', 'guangzhou', 'foshan']
>>> city[::-2]
['foshan', 'zhuhai']
>>> city[::2]
['dongguan', 'guangzhou']
>>> city.pop()
'foshan'
>>> city
['dongguan', 'zhuhai', 'guangzhou']
>>> city.remove('dongguan')
>>> city
['zhuhai', 'guangzhou']
>>> city.sort()
>>> city
['guangzhou', 'zhuhai']
View Code
>>> city.reverse()
>>> city
['beijing', 'guangzhou', 'zhuhai']
>>> city[0]='shenzhen'
>>> city
['shenzhen', 'guangzhou', 'zhuhai']
View Code
  • copy 浅复制,只复制第一层,深复制导入copy模块,用deepcopy方法
  • 多层嵌套的时候,内部是内存地址/指针,因此改一个全部改
>>> city
['shenzhen', 'guangzhou', 'zhuhai']
>>> city1=['chongqing','chengdu']
>>> city.extend(city1)
>>> city
['shenzhen', 'guangzhou', 'zhuhai', 'chongqing', 'chengdu']
>>> city2=['shanghai','hangzhou']
>>> city[1]=city2
>>> city
['shenzhen', ['shanghai', 'hangzhou'], 'zhuhai', 'chongqing', 'chengdu']
>>> city3=city.copy()
>>> city3
['shenzhen', ['shanghai', 'hangzhou'], 'zhuhai', 'chongqing', 'chengdu']
>>> city3[1][0]='SHANGHAI'
>>> city
['shenzhen', ['SHANGHAI', 'hangzhou'], 'zhuhai', 'chongqing', 'chengdu']
>>> city3
['shenzhen', ['SHANGHAI', 'hangzhou'], 'zhuhai', 'chongqing', 'chengdu']
>>> city[0]='Shenzhen'
>>> city
['Shenzhen', ['SHANGHAI', 'hangzhou'], 'zhuhai', 'chongqing', 'chengdu']
>>> city3
['shenzhen', ['SHANGHAI', 'hangzhou'], 'zhuhai', 'chongqing', 'chengdu']
>>> 
View Code
  • 补充浅copy
>>> import copy
>>> person=['name',['age',100]]
>>> p1=copy.copy(person)
>>> p2=person[:]
>>> p3=list(person)
>>> print(p1,p2,p3)
['name', ['age', 100]] ['name', ['age', 100]] ['name', ['age', 100]]
>>> print(id(p1),id(p2),id(p3))
140006071338632 140006094074952 140006094157064
View Code
  • list.index('value')获取某个元素的下标

 11.数据类型元组tuple

  • 元组不能更改,只读列表

12. 列表索引获取enumerate

>>> list1=['a','b','c','d']
>>> for key,values in enumerate(list1):
...     print(key,values)
... 
0 a
1 b
2 c
3 d

13.数据类型字符串str

http://www.cnblogs.com/jenvid/p/7808498.html

14.数据类型字典dict

 http://www.cnblogs.com/jenvid/p/7809329.html

 15.未完待续

posted @ 2017-11-06 15:12  Jenvid  阅读(322)  评论(0编辑  收藏  举报