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
#在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()
#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中 |