python 笔记1

  1. 用户输入
  2. 模块
  3. 字符串拼接
  4. 数据类型
  5. 字符串
  6. 循环(while)

 

1、 用户输入

    不少状况下会有用户输入用户名密码的场景,下面将用命令模拟一个;java

#!/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调试时没法显示预期效果;python

#!/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)

 

2、 模块

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

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import sys
 
print(sys.argv)
 
 
#输出
$ python test.py hello world
['test.py', 'hello', 'world']  #把执行脚本时传递的参数获取到了

   执行系统命令(os);bash

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import os
 
os.system("df -h") #调用系统命令

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

    模块导入;app

    #通常将本身写的模块放到python2.7/dist-packages下面python2.7

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

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

3、 字符串拼接

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

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

#+号拼接
name = 'yark'

print 'you name is ' + name

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

 这两种方式的区别在于,使用+号至关于在内存中开辟了两段地址空间,而使用占位符则只开辟一段空间,因此在使用时尽可能使用 占位符来拼接

4、数据类型

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)

5、字符串

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

六、循环(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
相关文章
相关标签/搜索