不少状况下会有用户输入用户名密码的场景,下面将用命令模拟一个;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)
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
#在引用模块的时候默认第一找的是当前目录下面的模块调试
在拼接字符串时,有两种写法,一种是使用‘+’拼接,另外一种是%s 占位符拼接,代码实现以下:code
#!/usr/bin/python #-*-coding:utf-8-*- #+号拼接 name = 'yark' print 'you name is ' + name #占位符 print 'you name is %s'%name
这两种方式的区别在于,使用+号至关于在内存中开辟了两段地址空间,而使用占位符则只开辟一段空间,因此在使用时尽可能使用 占位符来拼接
1. 数字
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]
>>> 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'] >>>
#!/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
六、循环(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