python入门——基础知识记录

记录python基础知识,备用
资料:《python编程 从入门到实践》

变量

变量名只能包含字母、数字和下划线。以字母或下划线开头

注释

使用#

基本数据类型

  1. 字符串
    各种方法:
    str.title() // 以首字母大写的方式显示每个单词
    str.upper() // 转为全大写字母
    str.lower() // 转为全小写字母
    str.rstrip() // 删除字符串末尾多余的空白,ps: 原字符串没有改变,除非重新赋值: str=str.rstrip()
    str.lstrip() // 删除字符串开头多余的空白
    str.strip() // 删除字符串开头结尾多余的空白
  2. 数字
  • 整数
    python3中:整数除法( /)保留小数部分,// 才是向下取整
    python2中,整数除法的结果只包含整数部分,小数部分被删除(并且非四舍五入),避免这种结果的方法:将其中一个数转为浮点类型
  • 浮点数
    与其他语言一样,浮点数的运算会存在误差问题
  • 使用str()函数避免类型错误
    age = 12
    str(age) // ‘12’
  1. 列表
  • 列表由一系列按特定顺序排列的元素组成。列表使用方括号[]表示。索引从0开始。最后一个元素可以使用-1访问。
  • 修改列表
    list[0] = ‘hello’
  • 在列表末尾添加元素
    list.append(‘hello’)
  • 在列表中插入元素
    list.insert(0, ‘hello’) // 此例插入到第一个前面,即开头
  • 从列表中删除元素
    del list[0]
    list.pop()// 删除列表末尾的元素,并让你能接着使用它
    例: a = list.pop() print(a) // 可以输出东西
    list.pop(0) // pop()可以用来删除列表中任意位置的元素
    remove() // 如果只知道要删除的元素的值,可以使用方法remove(),注意remove只删除第一个指定的值,如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。
  • 使用sort()方法可以对列表进行永久性排序
    cars.sort(reverse=True) // 降序
  • 使用sorted()方法对列表进行临时排序
  • 使用reverse()永久性翻转列表
  • 列表长度: len(list)
  • 遍历列表
for car in cars:
	print(car)
  • 创建数值列表
for value in range(1,5):
	print(value) // 1 2 3 4

可以使用函数list()将range()的结果直接转换为列表
numbers = list(range(1,6))
// [1,2,3,4,5]
even_numbers = list(range(2,11,2)) // 范围[2,11),步长为2
// [2,4,6,8,10]

  • 对数字列表执行简单的统计计算
    min(list) // 最小值
    max(list) // 最大值
    sum(list) // 总和
  • 列表解析
    squares = [value**2 for value in range(1,11)] // 1,4,9,16,25,36,49,64,81,100
  • 使用列表的一部分
    print(list[0:3]) // list[0],list[1],list[2]
    print(list[:3]) // list[0],list[1],list[2]
    print(list[-3:]) // 倒数第三位开始直至末尾元素
    复制列表
    list_copy = list[:] // 此处list_copy和list为两个值相同的不同列表
  1. 元组
  • 不可变的列表被称为元组。元组使用圆括号。
  • 虽然不能修改元组的元素,但可以给存储元组的变量重新赋值。
  1. 字典
  • 在python中,字典是一系列键-值对。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。字典不关心顺序
  • 字典和列表可以相互嵌套。
alien = {'color': 'red', 'points': 5}
print(alien['color']) // red
  • 添加、修改键-值对
alien['x_position'] = 1
  • 删除键-值对
del alien['color']
  • 遍历字典
for key, value in alien.items():
	print(key)
	print(value)
// 遍历所有的键
for key in alien.keys():
	print(key)
// 按顺序遍历字典中的所有键
for key in sorted(alien.keys()):
	print(key)
// 遍历字典中的所有值
// 使用values()方法
// 考虑值可能出现重复问题,使用set()方法
for value in set(alien.values()):
	print(value)

if语句

if age < 10:
	print(age+10)
elif age < 12:
	print(age+20)
else:
	print(age)

while循环

while age > 10 :
	age--

python可以使用break和continue语句

用户输入

  • 用户输入input()函数
// 用户输入存储到message中
message = input('input your message: ')
  • 使用int()来获取数值输入
age = input("how old are you? ")
age = int(age)
  • python2.7使用函数raw_input()来提示用户输入。

函数

  • 使用def定义函数
def greet_user():
	print("hello~~")
  • 位置实参和关键字实参
    位置实参: 参数调用顺序十分重要
    关键字实参: greet_user(user_name=‘henry’, pet_name=“ricky”) // 此处形参名字为user_name和pet_name
  • 参数默认值
def greet_user(pet_name, user_name="passerby"):
	print('hello, '+user_name+'hello, '+ pet_name)
greet_user(pet_name="ricky") // 此处user_name使用默认值
greet_user('ricky') // pet_name = 'ricky'
  • 传递列表
    使用列表传参 names=[‘you’,‘me’,‘he’]
  • 在函数中修改列表
    ps: 在函数中对列表参数的所做的任何修改都是永久性的。
  • 禁止函数修改列表
    向函数传递副本
print_func(names[:]) // 传递列表names的副本
  • 传递任意数量的实参
def make_pizza(*toppings):
	print(toppings)
make_pizza('hello') // ('hello')
make_pizza('hello','hi') // ('hello','hi')

形参名*toppings中的星号让python创建一个名为toppings的空元组(不可修改的列表未元组),并将收到的所有值都封装到这个元组中。

  • 结合使用位置实参和任意数量实参
def make_pizza(size, *toppings)
	print("\nMaking a "+str(size)+"-inch pizza with the following toppings:")
	for topping in toppings:
		print("- "+topping)
make_pizza(16,'h','t','j')
  • 使用任意数量的关键字实参
def build_profile(first, last, **user_info):
	profile={}
	profile['firstname'] = first
	profile['lastname'] = last
	for key, value in user_infp.items():
		profile[key] = value
return profile
user_profile = build_profile('albert','einstein',location=''princeton',field='physics')
print(user_profile)
  • 将函数存储在模块中
// 首先在pizza.py定义函数make_pizza
// 在making_pizzas.py中import
import pizza
pizza.make_pizza(16,'hello')
  • 导入特定函数
from module_name import function_name1, function_name,...
例如
from pizza import make_pizza
make_pizza(16, 'hello')
  • 使用as给模块指定别名
import pizza as p
p.make_pizza(16,'hello')
  • 导入模块中的所有函数
from pizza import *

class Dog():
	def __init__(self, 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!")
  • 根据约定,在python中,首字母大写的名称指的是类。这个类定义中的括号是空的,因为我们要从空白创建这个类。
  • __init__()是一个特殊的方法,创建实例时会自动运行。self是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
  • 根据类创建实例
my_dog = Dog('Alex', 6) // 方法__init__()并未显式地包含return语句,但python自动返回一个表示这条小狗的实例。我们将这个实例存储在变量my_dog中。
print("My dog's name is "+my_dog.name.title() + ".") // 访问属性
my_dog.sit() // 调用方法
  • 修改属性的值
    ① 直接修改
my_dog.age = 8

可以这么做,但个人认为是很危险的做法。
② 通过方法修改

  • 继承
    编写类时,并非总是要从空白开始。如果你要编写的类是另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
class Animal():
	def __init__(self, age, name):
		self.name = name
		self.age = age
	def run(self):
		print("The animal is running.")
class Dog(Animal):
	def __init__(self, age, name):
		super().__init__(age, name)	
		self.type = 'dog'  #子类自己的属性
	# 子类可直接重写父类的方法
		print("The dog is running.")
  • 导入类
    导入单个类 from car import Car
    导入多个类 from car import Car, ElectricCar
    导入整个模块 import car
    导入所有类 from car import *

文件和异常

  • 读取整个文件
# 关键词with在不再需要访问文件后将它关闭
with open('pi_digits.txt') as file_object:
	contents = file_object.read()
	print(contents)
# read()到达文件末尾时返回一个空字符串,而将这个空字符串显示出来就是一个空行。
# 要删除末尾的空行,可在print语句中使用rstrip()
# print(contents.rstrip())
  • 逐行读取
with open(filename) as file_object:
	for line in file_object:
		print(line.rstrip())
  • 创建一个包含文件各行内容的列表
with open(filename) as file_object:
	lines = file_object.readlines()
for line in lines:
	print(line.rstrip())
  • 写入文件
    ① 写入空文件,如果你要写入的文件不存在,函数open()将自动创建它。然而,以写入(‘w’)模式打开文件时千万要小心,因为如果指定的文件已经存在,python将在返回文件对象前清空该文件。
with open(filename, 'w') as file_object:
	file_object.write("helloworld")

ps:python只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数str()将其转换为字符串格式。
② 写入多行
使用换行符‘\n’
③附加到文件
以附加模式’a’打开文件

  • 异常
    使用try-except代码块
    try:
    	print(5/0)
    except ZeroDivisionError:
    	print("you can not divide by zero!")
    
    else代码块
    try:
    	answer = int(first) / int(second)
    except ZeroDivisionError:
    	print("you can not divide by zero!")
    else:
    	print(answer)
    
  • 处理FileNotFoundError异常
try:
	with open(filename) as f_obj:
		contents = f_obj.read()
except FileNotFoundError:
	print("Error!")

except中可以使用pass语句,什么都不做

  • 存储数据——json
    使用json.dump()和json.load()
import json
numbers = [1,2,3,4,5,6,7]
filename = "numbers.json"
with open(filename, 'w') as file_obj:
	json.dump(numbers, file_obj) # 存储到文件中
import json
filename = 'numbers.json'
with open(filename) as f_obj:
	numbers = json.load(f_obj) #读取文件内容

测试代码

  1. 测试函数
    要为函数编写测试用例,可先导入模块unittest以及要测试的函数,再创建一个继承unittest.TestCase类,并编写一系列方法对函数行为的不同方面进行测试。
import unittest
from name_function import get_formatted_name

class NamesTestCase(unittest.TestCase):
	def test_first_last_name(self): # 测试方法必须以test_开头
		formatted_name = get_formatted_name('janis', 'joplin')
		self.assertEqual(formatted_name, 'Janis Joplin')
		
unittest.main()

测试不通过则修改被测试函数,直至通过
各种断言方法

方法用途
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中
  1. 测试类
import unittest
from survey import AnonymousSurvey
class TestAnonymousSurvey(unittest.TestCase):
	def test_store_single_response(self):
		question = "What language did you first learn to speak?"
		my_survey = AnonymousSurvey(question)
		my_survey.store_response('English')
		self.assertIn('English', my_survey.response)
unittest.main()

使用方法setUp()
之前我们在每个测试方法中都创建了一个AnonymousSurvey实例,并在每个方法中都创建了答案。unittest.TestCase类包含方法setUp(),让我们只需创建这些对象一次,并在每个测试方法中使用它们。如果你在TestCase类中包含了方法setUp(),python将先运行它,再运行各个以test_打头的方法。这样,在你编写的每个测试方法中都可使用在方法setUp()中创建的对象了。

import unittest
from survey import AnonymousSurvey

class TestAnonymousSurvey(unittest.TestCase):
	def setUp(self):
		question = "What language did you first learn to speak?"
		self.my_servey = AnonymousSurvey(question)
		self.response = ['English', 'Spanish', 'Mandarin']
	def test_store_single_response(self):
		self.my_survey.store_response(self.response[0])
		self.assertIn(self.response[0], self.my_survey.responses)
	def test_store_three_response(self):
		for response in self.responses:
			self.my_survey.store_response(response)
		for response in self.responses:
			self.assertIn(response, self.my_survey.responses)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值