您的位置:首页 > 编程语言 > Python开发

python 笔记1

2016-09-16 00:00 162 查看
用户输入

模块

字符串拼接

数据类型

字符串

循环(while)

一、 用户输入

很多情况下会有用户输入用户名密码的场景,下面将用命令模拟一个;

#!/usr/bin/env python
#_*_coding:utf-8_*_

#only on python 2.x
#name = raw_input("What is your name?")
#python 3.x
name = input("What is your name?")
print("Hello " + name )

输入用户名密码,并且不显示密码,不显示密码将使用getpass模块完成,注:使用pycharm调试时无法显示预期效果;

#!/usr/bin/python
#_*_coding:utf-8_*_

import getpass
#python 2.x
name = raw_input('what is your name?')
password = getpass.getpass('password: ')
print(name,password)


二、 模块

python 的强大之处在于有非常丰富的标准库和第三方模块,下面举两个比较小的例子

获取脚本传递的参数(sys);

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys

print(sys.argv)

#输出
$ python test.py hello world
['test.py', 'hello', 'world']  #把执行脚本时传递的参数获取到了

执行系统命令(os);

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os

os.system("df -h") #调用系统命令

#保存命令结果,适用于输出比较少的系统命令,这个读取是等命令执行完之后才返回执行结果的,时间比较长
cmd = os.popen('df -h').read()
print cmd

模块导入;

#一般将自己写的模块放到python2.7/dist-packages下面

例如:/usr/lib/python2.7/dist-packages

#在引用模块的时候默认第一找的是当前目录下面的模块

三、 字符串拼接

在拼接字符串时,有两种写法,一种是使用‘+’拼接,另一种是%s 占位符拼接,代码实现如下:

#!/usr/bin/python
#-*-coding:utf-8-*-

#+号拼接
name = 'yark'

print 'you name is ' + name

#占位符
print 'you name is %s'%name

这两种方式的区别在于,使用+号相当于在内存中开辟了两段地址空间,而使用占位符则只开辟一段空间,所以在使用时尽量使用 占位符来拼接

四、数据类型

1. 数字

int (整型)

long(长整型)

float(浮点型)

2. bool (布尔值)

3. 字符串

4. 列表

创建列表 name_list = ['aa','bb','cc','dd']

列表索引

>>> name_list = ['aa','bb','cc','dd']
>>> print name_list[0],name_list[1],name_list[2]
aa bb cc
#查找某个值在列表中的下标位置
>>> name_list.index('aa')
0


切片

>>> name_list = ['aa','bb','cc','dd']
#打印前两个数
>>> print name_list[0:2]
['aa', 'bb']
#打印最后一个数
>>> print name_list[-1]
dd
#步长为2,每隔一个打印一个
>>> print name_list[::2]
['aa', 'cc']

>>> name_list
['aa', 'bb', 'cc', 'dd', 'ee']
#取1-4的值,1,2,3
>>> name_list[1:4]
['bb', 'cc', 'dd']


追加

>>> print name_list
['aa', 'bb', 'cc', 'dd']

#追加使用 list.append()
>>> name_list.append('ee')
>>> print name_list
['aa', 'bb', 'cc', 'dd', 'ee']


插入

>>> name_list
['aa', 'bb', 'cc', 'dd', 'ee']
#在下标为2的位置插入11
>>> name_list.inster(2,'11')

>>> name_list
['aa', 'bb', '11', 'cc', 'dd', 'ee']


删除

>>> name_list
['aa', 'bb', '11', 'cc', 'dd', 'ee']

#删除内容为11,使用list.remove()
>>> name_list.remove('11')
>>> name_list
['aa', 'bb', 'cc', 'dd', 'ee']

>>> name_list
['aa', 'bb', 'cc', 'dd', 'ee']
#删除2-4中间的元素
>>> del name_list[2:4]
>>> name_list
['aa', 'bb', 'ee']

>>> name_list
['aa', 'bb', 'cc', 'dd']
#pop 默认删除列表最后一个元素
>>> name_list.pop()
'dd'
>>> name_list
['aa', 'bb', 'cc']
#使用pop删除下标为0的元素
>>> name_list.pop(0)
'aa'
>>> name_list
['bb', 'cc']


列表长度

>>> len(name_list)
3
>>> name_list
['aa', 'bb', 'ee']


包含(查询列表中是否包含该元素)

#判断3是否包含在name中,并且出现的次数是多少
>>> name
['aa', 'bb', 'cc', 'dd', 'ee', 11, 22, 3]
>>> if 3 in name:
...     cou = name.count(3)
...     print '3在name中,并且出现%s次'%cou
...
3在name中,并且出现1次


列表合并(将一个新的列表,合并到旧列表中)

name = ['aa','bb','a2','cc','dd','ee',11,22,33,66,99,'a2',100]
name2 = ['zz','ll',11]
print name
name.extend(name2)
print name

#输出
['aa', 'bb', 'a3', 'cc', 'dd', 'ee', 11, 22, 33, 66, 99, 'a3', 100]
['aa', 'bb', 'a3', 'cc', 'dd', 'ee', 11, 22, 33, 66, 99, 'a3', 100, 'zz', 'll', 11]


列表copy(深浅copy)

>>> name = ['a','b','c','d','e','f',[1,2,3],'gg']
>>> name2 = name.copy()
'''浅拷贝--只拷贝列表的第一层,第二层的内存地址相同'''
#将name列表中下标为1的元素改为'bb'
>>> name[1]='bb'
>>> print(name,name2)
['a', 'bb', 'c', 'd', 'e', 'f', [1, 2, 3], 'gg']
['a', 'b', 'c', 'd', 'e', 'f',[1, 2, 3], 'gg']    #name2 中无修改

#将列表中的列表值修改后,copy的name2值也修改了
>>> name[6][0]=11
>>> print(name,name2)
['a', 'bb', 'c', 'd', 'e', 'f', [11, 2, 3], 'gg']
['a', 'b', 'c', 'd', 'e', 'f', [11, 2, 3], 'gg']

'''深拷贝--两个列表完全独立,内存中地址都不一样'''
>>> import copy
>>> name3 = copy.deepcopy(name)
>>> print(name3)
['a', 'bb', 'c', 'd', 'e', 'f', [11, 2, 3], 'gg']
>>> name[6][0] = 22
>>> print(name)
['a', 'bb', 'c', 'd', 'e', 'f', [22, 2, 3], 'gg']
>>> print(name3)
['a', 'bb', 'c', 'd', 'e', 'f', [11, 2, 3], 'gg']
>>>


列表练习题(找出一个嵌套列表中所有9,改成99,并且删除列表中所有22)

#!/usr/bin/python3

name = ['aaa', 'java', 'c', 'c++', [9, 5, 1, 298, 321, 22, 44,9], 9,235, 267, 235,9,[9,22,9]]

for now in name:
if type(now) == list:
for i in range(now.count(9)):
indexa = now.index(9)
now[indexa] = 9999
for i in range(now.count(22)):now.remove(22)
for i in range(name.count(9)):
ele_index = name.index(9)
name[ele_index] = 9999
for i in range(name.count(22)):name.remove(22)

print(name)

5. 元组(不可改变的列表,只读列表)

#创建元组
a = (1,2,3,4,5)

6. 字典
字典格式如下:

dic = {

123456:{

'name': "adb",

'age': 18

}

}




>>> dic[123456]['qq'] = 130194532
>>> print(dic)
{123456: {'qq': 130194532, 'age': 18, 'name': 'adb'}}




>>> del dic[123456]['qq']
>>> print(dic)
{123456: {'age': 18, 'name': 'adb'}}


将所有value取出来,所有的key取出来

#取出所有value
>>> print(dic.values())
dict_values([{'age': 18, 'name': 'adb'}])
#取出所有key
>>> print(dic.keys())
dict_keys([123456])


查询一个key值是否在字典内

#python 3.X
>>> print(dic)
{123456: {'age': 18, 'name': 'adb'}}
>>> 123456 in dic
True

#python 2.x
>>>dic.has_key(123456)


五、字符串

1. 字符串去除空格或换行

f = 'abc \n'
f.strip('\n')

2. 分割

f = 'abc,jae,jjj'

print(f.split(','))

输出
['abc', 'jae', 'jjj']

3. 指定分隔符合并起来

f = 'abc,jae,jjj'
f2 = f.split(',')
print('|'.join(f2))

#输出
abc|jae|jjj

4. 字符串查找

j = 'yark'
print(j.find('a'))
print(j.find('aa'))

#返回值为字符串的下标,如果没有则为-1
#输出
-1
1

5. 判断字符串是否为数字

age = input('your age: ')
if age.isdigit():
age = int(age)
else:
print('None')

#输出
your age: df
None

6、循环(while)

循环100次,但50-60之间的数据不打印

#!/usr/bin/python3

count = 0

while True:
count += 1
if count > 50 and count < 60:
continue
print(count)
if count == 100:
print('exit')
break
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python