Python学习笔记(一)


python编程从入门到实践


变量和简单数据类型

字符串相关

name.title ()   	——  以首字大写的方式显示每个单词 
name .lower ()		——字符串改为全部小写
name .upper ()		——字符串改为全部大写

\n	添加换行符
\n\t	换到下一行、并且在下一行开头添加一个制表符

name.rstrip()		——可确保字符串name 末尾没有空白
name.lstrip()		——确保name 开头没有空白
name.strip()		——确保name 两端没有空白
la = 'wait'

message = "happy" + str(age) + "rd Birthday!"

import this  ——获悉编写优秀python的指导原则

列表简介

# python 索引从0开始,而不是1
name[0].title()

#添加元素	将元素附到列表末尾
moto.append('elc')
#插入元素	任何位置
moto.insert(num, 'elc')
#删除元素	del删除后不使用、pop删除后还能使用
	del moto[num];
	#pop()可删除列表任何的元素,并让你能够接着使用
    last = moto.pop(num)	#意味着被删除的元素,并且弹出
	
    #根据值删除元素、删除后还能接着使用它的值
    moto.remove('elc')		#只能删除第一个指定值
    
#使用sort()对列表进行永久性排序
    cars.sort()		#默认按照字母顺序排列	Ex:reverse = True
   
#使用sorted()进行列表临时排序
	sorted(cars, reverse  = True)
#反转列表元素顺序
	cars.reverse ()
#函数len()可以获悉列表长度
	len(cars)

    

操作列表

#for循环
	for magician in magicians:
       print(magician)		#打印时,会自动换行
#千万要注意缩进形式

#创建数字列表
	range(1,5)		#从指定第一值开始,并在到达第二个指定值停止,不包含第二个
    #从2开始不断加2,知道达到或超过终值(11),末尾的2位步长
    number = list(range(2,11,2))
ex:
    squares = []			#!!!
    for value in range(1,11)
    	square = value**2
        squares.qppend(square)
       
    print(squares)
    
ex:
    squares = [value**2 for value in range(1,11)]
    
#需要指定索引0~3,这将输出分别为0、1、2的元素
print(player[0:3])
#最后三个元素
print(player[-3:])

#复制列表、即创造独立副本
friend_foods = mu_food[:]

#元组、创造一系列   不可修改!的元素
	dimensions = (200, 50)		#利用圆括号,表示元素200、50
    
	

if语句

#在python中,检查是否相等时区分大小写
#所以一般只想检查变量的值是,可将变量值转化为小写	car.lower()

#检查多个条件	可使用 and 或者 or 直接相连
#检察特定值是否包含在列表中
‘mushrooms’ in requested_toppings

#检查特定值是否不包含在列表中
if user not in banned_users:
    print()
    
#if-else
if age <=18:
    print()
else:
    print()
    
#if-elif-else		price = 5;则在打印的时候应该为:str(price)
if age <4:
    print()
elif age<10:
    print()
else:
    print()

#在一个列表中存储数字1-9
numbers = list(range(1, 10));

for number in numbers:
    print(str(number) + "th")

字典

#关于字典,注意大括号和中括号的使用
alien_0 = {'color': 'green ', 'point ': 5}


print (str (alien_0['points']))

#给字典中添加一组	'x_position' : 0 
alien_0['x_position '] = 0	#注意此处中括号
#删除某一组值
del alien_0['points']		#该值永远消失
#使用字典来存储用户提供的数据或在编写能自动生成大量键-值对的代码时,通常都需要定义一个  空字典!!

#有类似对象组成的字典		注意书写格式
favorite_language = {
    'Jen ': 'python',
    'sarah' : 'c',
    'edward' : 'ruby',
	}

# ‘age ’ 不等于 'age'    前一个含有空格
print(str(message['age ']))

##   for key, value in user_0.items():
##	 if 'Erin' not infavourite_last.keys():

### 字典中values(), keys(), items() 
>>> dict = { 1 : 2, 'a' : 'b', 'hello' : 'world' }  
>>> dict.values()  	#返回的是  值列表
['b', 2, 'world']  
>>> dict.keys()  	#返回的是  键列表
['a', 1, 'hello']  
>>> dict.items()  	#返回的是  值-键对应
[('a', 'b'), (1, 2), ('hello', 'world')]  

#若要按照顺序遍历	sorted()
for name in sorted(favorite_language.keys()):
    
#若为了剔除重复项,则可以使用set()
for language in set(favourite_language.values()):
   
#在字典中存储字典时的调用
for city, city_info in cities.items():
    country = city_info['country'].title()

用户输入和while循环

#input()函数的调用
name = input("please enter your name:")
print("Hello, + name + "!")
      
#在字符串和数字进行比较时,不能直接比较。应该利用   int()   进行换算
# 例如在作比较时,可以使用:	height = int(height)  然后进行 if height >36
      
# int(number)  从字符串转化成数字	从用于 判断时
# str(number)  从数字转化成字符串	常用于 打印时

#在while执行之前一般都要进行中间变量初始化
active = True
while active:

#退出循环的两种方式
1.while 的条件执行变成 False
2.break

# continue 用来返回循环开头,并根据条件测试结果决定是否继续执行  用法同break

#利用while进行重复元素删除
while 'cat' in pets:
      pets.remove('cat')
#使用用户输入来填充字典
	responses[name] = response


函数

#关键字实参		以下两者是相同的
describe_pet(animal_type = 'hamster', pet_name = 'harry')
describe_pet(,pet_name = 'harry', animal_type = 'hamster')

# 函数返回简单值
def ____
	return full_name.title()
#函数可返回任何类型的值 包括列表和字典等较复杂的数据结构

#传递列表
#禁止函数修改列表
	function_name(list_name[:])
    ex:  print(unprinted_designs[:], completed_models)
        
#传递任意数量的实参
###形参名*toppings中的星号让python创建一个名为toppings的空元祖,并将收到的所有制均存在这个空元组中
def make_pizza(*toppings):
    for topping in toppings:
        print("-" + topping)
make_pizza('peperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')
#如果要让函数接收不同类型的实参,必须在函数定义中将接纳任意数量的形参放在最后

#使用任何数量的关键字实参
def build_profile(first, last, **user_info)

#导入整个模块	pizza.py 和 making_pizza.py 应放在同一目录下
#在making_pizza.py中,可以使用: 
import pizza
#如果要从导入模块中的特定函数则:
from module_nmae import function_name
from pizza import make_pizza

#使用as给函数指定别名
#例如给函数   make_pizza()指定了别名 mp()
from pizza import make_pizza as mp
from module_nmae ipmort function_name as fn
import pizza as p

#导入模块中的所有函数	!!将pizza的所有函数复制到当前文件夹,但是慎用:因为可能出现多个名称相同的函数或变量,进而覆盖函数
from pizza import *

##给形参制定默认值时,或者调用关键字实参,等号两边不要有空格
def function_name(parameter_0, parameter_1='default value')

#在python中,首字母大写的名称指的是 类;
#在命名中,我们通常可以认为首字母大写的名称(Dog)指的是类;而小写的名称(my_dog)指的是根绝类创建的实例
class Dog():
	#__init__()第一包括三个形参,其中self必不可少,而且位于其他所有之前
	def __init__(self, name, age):
		"""初始化属性name和age"""
		self.name = name
		self.age = age
	
	def sit(self):
		"""模拟小狗被命令时蹲下"""
		print(self.name.title() + " is now sitting.")
	
	def roll_over(self):
		"""模拟小狗被命令时打滚"""
		print(self.name.title() + " rolled over")
        
#修改属性的值
#1.直接修改属性的值
#2.通过方法修改属性的值 		def update(self, mileage):
#3.通过方法对属性的值进行递增


#关于继承
#子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法
#创建子类时,父类必须包含在当前文件中,且位于子类之前
class EledctricCar(Car):
    	#函数super()是一个特殊函数,帮助python将父类和子类关联起来
        #父类也成为superclass, 名称super因此出名
        def __init__(self,make, model, year):
            super().__init__(make, model, year)
            
#重写父类的方法
#可在子类中定义,他与要重写的父类方法同名,则python可忽视父类中的方法。

##!!将实例用作属性

#在car.py中导入Car类,并创建其实例
from car import Car		#car为文件名,Car为类名
##直接导入整个模块 car.py
import car 		
my_beetle = car.Car('volkswagen', 'beetle', 2016)


#调用OrderedDict()来创建一个空的有序字典,并将其存储在glossary中。
from collections import OrderedDict
glossary = OrderedDict()


文件和异常

#本章的技能可提高程序的适用性、可用性和稳定性

#读取整个文件				注意要放在同一文件夹下
with open('pi_digits.txt') as file_object:
	contents = file_object.read()
	print(contents.rstrip())	#.rstrip 可以删除字符串末尾的空白行
    							#.strip  可以删除字符串每行左侧的空格

#文件路径
file_path = 'C:\Users\ehmatthes\other_files\text_files\filename.txt'
with open(file_path) as file_object:
    
#对文件进行逐行读取
with open('pi_digits.txt') as file_object:
	for line in file_object:
		print(line.rstrip())

#创建一个包含各行内容的列表,	并且使用文件的内容
filename = 'pi_30_digits.txt'

with open(filename) as file_object:
    lines = file_object.readlines()
    
pi_string = ''
for line in lines:
    	pi_string += line.stip()

print(pi_string)	##	print(pi_string[:52] + "...") 
print(len(pi_string))

#打开文件时,可指定“都区模式('r')、写入模式('w')、附加模式('a')或者可以同时读取和写入文件的模式('r+')”

#如果要给文件添加内容,而不是覆盖原有的内容,可用附加模式('a')

#try-except  异常代码处理
try:
except ZeroDivisionError:
else:
    
#处理FileNotFoundError  你要查找的其他文件、文件名可能不正确或者这个文件根本不存在
#方法split()以空格为分隔符将字符串分拆成多个部分
words = contents.split()
num_words = len(words)
print(num_words)

#使用多个文件时,可用函数表示
def count_words(filename):
    
#  pass 语句,可在代码块中使用来让python什么都不要做
#可以使用count()确定特定单词或短语在字符串中出现了多少次
line.count('row')
line.lower().count('row')

#模块json让你能够简单的python数据结构转储在文件中,并在程序再次运行时加载该文件中的数据
#json.dump()用来存储这组数字,,	json.load()负责使用~~~number_writer.py
import json

number = [2.35.7.11.13]

filename = 'numbers,json'
with open(filename, 'w') as f_obj:
    json.dump(numbers, f_obj)~~~num_reader.py
import json

filename = 'numbers.json'
with open(filename) as f_obj:
    numbers = json.load(f_obj)
    
print(numbers)

测试代码

#unittest提供了一系列代码测试工具
#unittest类最有用的功能之一:断言!!断言使用来核实得到的结果是否与期望的结果一样
import unittest 
class NameTestCase(unittest.TestCase)def   :
        self.assertEqual(formatted_name, 'Woflgang Amadeus Mozart')
方法 用途
assertEqual(a, b ) 核实 a == b
assertNotEqual(a, b) 核实 a != b
assertTrue(x) 核实x为true
assertFalse(x) 核实x为false
assertIn(item, list) 核实item在list中
assertNotIn(item, list) 核实item不在list中

你可能感兴趣的:(Python,学习笔记)