title()首字母大写 upper() lower()大小写
+""+拼接
\n换行 \t制表符
rstrip()排除末尾空格 lstrip()开头空格strip()排除空格
可以直接对数字运算 **2表示乘方 包括小数,但是需要进行小数位处理
整数和字符进行拼接的时候必须使用str()进行连接
整数相除没小数,需要的整数至少有一个浮点数
#表示注释
import this Python之禅
[] ,号分割 表示数组 we[0]表示第一个 we[-1]表示倒数一个,长度为空时,-1会出错
append()末尾新添加即可 insert(0,1)指定位置 添加
del we[0] 删除指定 we.pop()可以删除末尾元素,并指定给其他元素 we.pop(0)删除指定再复制
we.remove('val')删除值
we.sort()排序 we.sort(reverse=true)反向排序
sorted(we) 仅仅临时性排序,不影响正常顺序
we.reverse()反转
len(we)来确定长度
缩进来区分是否与前一行保持关系
range()数值列表
赋值 we=list(range(1,7))构造 we=list(range(1,7,2)) 步长为2的构造
min(we) max(we) sum(we) 最小 最大 求和
合并写法 we=[val**2 for val in range(1,6)]
切片 we[1:3] 1、2 we[:3] 0、1、2 we[2:] 2、3、4 we[-3:] 2、3、4 we[:] 全部 0、1、2、3、4
切片可以进行遍历
we1=we[:] 切片复制复制可以直接复制数据过去
we1=we 则只是将索引复制,两个列表公用一个地址
we=("1","2") 元组,固定值
we[0] 元组 是不能修改的,we=(2,3)可以重新赋值
每次缩进使用四个空格
程序80字符,注释72字符 注意每行的意义
空行只用来进行功能区分
if one =='bmw': else: 不相等使用!= and or 同样使用 one in we one not in we 进行包含判断
== != 《= 都应在判断符旁边添加两个空格
if条件判断区分大小写 可以用lower upper进行区分
布尔 True False 注意只有第一个字母大写的时候才是特殊布尔值
if-elif-else else未必一定存在,可以只用if-elif 一个代码块,多个代码块只能用多个if
for if 配合 可以完成特定元素检测,以及确定for对象是否为空
字典即字符串拼接 键值对
we_0={'color':'red','points':5}print we_0
print we_0['color']
we_0={}
we_0['x']='a'
we_0['y']='b'
print we_0
字典的属性字段键值可以直接赋值
键值对删除属性时 del we_0['color']
类似对象组成字典
we={
'john':'c',
'tom':'java',
}
print("john like "+
we['john']+
".")
遍历we key1,val1可以随意取值,但是必须成对出现,items必须存在,才能进行字典的遍历
print ("\n"+key1+" "+val1)
for name in we.keys()遍历key 等同于默认 for name in we 但是尽量显式表达
for name in sorted(we.keys()) 排序 for name in we.values()遍历值 for name in set(we.values())遍历唯一集合
嵌套:
1、字典列表
for i in range(1,30):
temp={'color':'red','points':5}
we.append(temp)
for k in we[:3]:
if k['color']=='red':
k['color']='green'
k['points']=6
for j in we[:5]:
print j
2、在字典中存储列表
we={
'color':'red',
'points':['x','y']
}
print we['color']
for point in we['points']:
print point
we={
'tom':['python','c'],
'sara':['python'],
'jhon':['java','c'],
}
for k,v in we.items():
if len(v)==1:
print (k +"likes is" +
"\n" +v[0])
else:
print k +"likes are"
for lan in v:
print lan
3、字典嵌套字典
we={
'zhangsan':{
'name':'zhangsan',
'mima':'123456',
},
'lisi':{
'name':'lisi',
'mima':'123',
}
}
for k,v in we.items():
print (k +"mingxi is"+
"\n name "+ v['name']+
"\n mima "+ v['mima']
)
#coding=utf-8 支持中文
int() 转换整数 %求余 判断奇偶数
input() raw_input() 针对2.7
#message = input("erver: ")
active = True
message = ""
while message !="quit":
message = raw_input("erver: ")
if message !="quit":
print message
else:
active = False
break 可以实现active的作用 实现中止 continue 跳出本次循环,但是可以执行下面的部分
we = ['1','2','3']them = []
while we:
he = we.pop()
print he
them.append(he)
for k in them:
if k == '1':
them.remove(k)
print them
while 移动
responses = {}
status = True
while status:
name = raw_input("your name: ")
response = raw_input("which one you like: ")
responses[name]=response
repeat = raw_input("continue? y/n ")
if repeat == "n":
status = False
print("==============")
for k,v in responses.items():
print k+" "+v
input 在2.7中只能用int,raw_input才可以用str
函数
#coding=utf-8 支持中文def zz(username,age):
"""文档问候语"""
print (username+"vv")
zz('name')
实参 形参 zz('name','2')位置实参 zz(username='name',age='2')关键字实参
默认值 def zz(username,age='2'): z(username='name') 都是2 注意实参位置 可忽略形参值 注意等效模式
#coding=utf-8 支持中文
def zz(username):
"""文档问候语"""
print (username+"vv")
return 11
temp=zz('name')
print temp
当形参默认后,实参做好位置,可以选择性传递参数,字典也可以正常返回
传递列表
#coding=utf-8 支持中文
def zz(tables):
"""文档问候语"""
for table in tables:
print (table+"vv")
we=["1","2","3"]
zz(we)
禁止函数修改列表 we[:] 就可以保证原列表不收影响,而直接把列表值向下传递
zz("1","2","3") 打印("1","2","3") 可以用zz(*alls) 的空元组来接收所有的实参 并可以用for all in alls来循环
**alls 可以实现空字典功能
函数存储在模块,模块使用import调用,从而实现整体
import pizza pizza.make_pizza() 调用
from pizz import make_pizza make_pizza()直接调用 引入多个函数用,号隔开 全部引入用*号表示(注意此时不需要模块.调用) as mp mp()别名调用 模块也可以参照这个起别名
给形参制定默认值时,等号两边不要有空格!!!!!!!!!!!!!!!!!!!!!!!!!!!
函数中给关键字实参赋值时,等号两边不要有空格!!!!!!!!!!!!!!!!!!!!!!!!!!!
#coding=utf-8 支持中文
类
#coding=utf-8 支持中文class Dog(object): #2.7必须填写object 防止新创建类
"""test"""
def __init__(self,name,age):
self.name=name
self.age=age #也可以在这里对属性进行默认值的赋值
self.sex="man" #默认赋值
def sit(self):
print(self.name+" sit")
def roll_over(self):
print(sefl.name+" roll_over")
my_dog = Dog("miss","2") #默认参数可以不传值
print(my_dog.name)
my_dog.sit()
class Hospital(object):
""""医院"""
def __init__(self,cishu='2'):
self.cishu=cishu
def des_cishu(self):
print self.cishu
class Black_dog(Dog):
"""继承"""
def __init__(self,name,age):
super(Black_dog,self).__init__(name,age) #2.7必须填写Black_dog,self
self.black="very"
self.hospital=Hospital()
def des_black(self): #如果des_black在主类里面有,这里类似重写
print self.black
my_black_dog = Black_dog("taotao","1")
print(my_black_dog.name)
my_black_dog.des_black()
my_black_dog.hospital.des_cishu()
my_dog.name=aa 可以修改,或者后期调用 def updatename(self,name) self.name=aa 新增依然
from car import Car,Ecar 打开模块car 导入其中的Car类和Ecar类
同一个模块中可以存储任意数量的类 my_car=Car() my_car=Ecar()
import car导入整个模块 后可以用car.Car 和car.Ecar()进行初始化
from car import *不推荐使用这种,有可能造成重名
#coding=utf-8 支持中文
##favorite_languaes= {}
from collections import OrderedDict # OrderedDict用来进行有序建模
from random import randint
favotite_languages = OrderedDict()
favotite_languages['jen']='python'
favotite_languages['sarah']='c'
favotite_languages['edward']='ruby'
favotite_languages['phil']='python'
for k,v in favotite_languages.items():
print k +" language is "+ v +" "+ str(randint(1,6))
熟悉代码风格,类名采用驼峰命名法,即类名中的每个单词首字母大写,而不是用下划线
实例名和模块名都采用小写格式,中间使用下划线
每个类应该在类定义中包含文档字符串
一个空行来分割方法,两个空行来分割类
需要同时倒入标准库的时候,先导入表中库import 空行,导入自己的库import
with可以使得python在适当时候关闭文件
#coding=utf-8 支持中文
#with open ('txt/1.txt') as file_object:
#contents=file_object.read()
#print contents.rstrip()
filename='txt/1.txt'
#with open (filename) as file_object:
# for line in file_object:
# print line.rstrip()
with open (filename,'a') as file_object:
file_object.write('test \n')
with open (filename) as file_object:
lines=file_object.readlines()
pi_string=''
for line in lines:
#print line.rstrip()
pi_string += line.rstrip()
bir = input('enter your word')
if str(bir) in pi_string:
print 'OK'
print pi_string
print pi_string[:3]
print (len(pi_string))
r只读,w写入,a附加,读取写入r+,默认r
#coding=utf-8 支持中文
print('请输入除数')
print('按q退出')
while True:
first = raw_input ('\n 第一个数字')
if first == 'q':
break
second = raw_input ('\n 第二个数字')
if second == 'q':
break
try:
answer = float(first)/float(second)
except ZeroDivisionError:
print '0不能做第二个数'
#except FileNotFoundError:
else:
print(answer)
#coding=utf-8 支持中文
title = '测试 一 下'
print title.split()
#pass可以将except进行过滤,什么都不显示
#coding=utf-8 支持中文
import json
numbers = [11,2,3]
file_name = 'number.json'
with open (file_name,'w') as f_obj:
json.dump(numbers,f_obj)
with open (file_name) as f_obj:
numbers_temp=json.load(f_obj)
print numbers_temp
#coding=utf-8 支持中文
import json
filename = 'username.json'
try:
with open(filename) as f_obj:
username2 = json.load(f_obj)
#except FileNotFoundError: 3.0版本
except IOError:
username = raw_input('请输入用户名\n')
with open(filename,'w') as f_obj:
json.dump(username,f_obj)
print '当你回来我们会记住你的,'+username
else:
print '欢迎回来'+str(username2)
改进版本
#coding=utf-8 支持中文
import json
def get_stroe_user():
filename = 'username.json'
try:
with open(filename) as f_obj:
username2 = json.load(f_obj)
#except FileNotFoundError: 3.0版本
except IOError:
return None
else:
return username2
def get_new_user():
username = raw_input('请输入用户名\n')
filename = 'username.json'
with open(filename,'w') as f_obj:
json.dump(username,f_obj)
return username
def greet_user():
username = get_stroe_user()
if username:
print '欢迎回来'+str(username)
else:
username = get_new_user()
print '当你回来我们会记住你的,'+username
greet_user()
测试函数
#coding=utf-8 支持中文
def get_formatted_name(first,last):
"""做测试"""
full_name = first + '' + last
return full_name.title()
#coding=utf-8 支持中文
from name_function import get_formatted_name
print("输入q退出")
while True:
first = raw_input ('\n请输入姓')
if first == 'q':
break
second = raw_input ('\n请输入名')
if second == 'q':
break
formaated_name = get_formatted_name(first,second)
print formaated_name
#coding=utf-8 支持中文 使用unittest 自己命名中不能包含
import unittest
from name_function import get_formatted_name
class NamesTestCase(unittest.TestCase):
'''测试'''
def test_first_last_name(self):
formaated_name = get_formatted_name('z','b')
self.assertEqual(formaated_name,'Zb')
unittest.main()
修改name_function形参
#coding=utf-8 支持中文
def get_formatted_name(first,last,mid=''):
"""做测试"""
if mid:
full_name = first + mid + last
else:
full_name = first + '' + last
return full_name.title()
assertEqual assertNotEqual assertTrue assertFalse assertIn assertNotIn
#coding=utf-8 支持中文
class AnonymousSurvey():
"""收集"""
def __init__(self,question2):
"""存储问题及答案"""
self.question = question2
self.responses = []
def show_question(self):
print(self.question)
def store_response(self,new_response):
self.responses.append(new_response)
def show_results(self):
print("结果")
for response in self.responses:
print('=' +response)
#coding=utf-8 支持中文
from survey import AnonymousSurvey
#定义问题
question = "选择一门语言"
my_survey = AnonymousSurvey(question)
#显示并存储
my_survey.show_question()
print('输入q退出')
while True:
response = raw_input("语言: ")
if response == 'q':
break
my_survey.store_response(response)
#显示调查结果
print('谢谢')
my_survey.show_results()
#coding=utf-8 支持中文
import unittest
from survey import AnonymousSurvey
class TestAnonymousSurvey(unittest.TestCase):
"""针对测试"""
def setUp(self):
question = "语言"
self.my_survey = AnonymousSurvey(question)
self.responses = ['Englishi','Spanish','Japa']
def test_stroe_s_response(self):
"""测试单个答案"""
#question = "语言"
#my_survey = AnonymousSurvey(question)
#my_survey.store_response('English')
#self.assertIn('English',my_survey.responses)
self.my_survey.store_response(self.responses[0])
self.assertIn(self.responses[0],self.my_survey.responses)
def test_stroe_three_response(self):
#question = "语言"
#my_survey = AnonymousSurvey(question)
#responses = ['Englishi','Spanish','Japa']
#for response in responses:
# my_survey.store_response(response)
#for response in responses:
# self.assertIn(response,my_survey.responses)
for response in self.responses:
self.my_survey.store_response(response)
for response in self.responses:
self.assertIn(response,self.my_survey.responses)
unittest.main()