Python学习 20180714基础完成

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必须存在,才能进行字典的遍历

for key1,val1 in we.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、字典列表

we=[]
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()

猜你喜欢

转载自blog.csdn.net/zb0567/article/details/80755368