Python 学习笔记

文章目录

Python 基础学习笔记

一、列表基础

# 定义变量
    # message = 'Hello Jydr World!'
    # print(message);

# 将单词开头大写 输出 Love About Bank
    # msg = "love aBouT BANK"
    # print(msg.title())

# 将单词全部大写 或者全部小写LOVE ABOUT BANK   love about bank
    # print(msg.upper())
    # print(msg.lower())

# 合并字符串
    # first_name = "JiuYang"
    # last_name = "DaoRen"
    # myname = first_name + last_name
    # print(myname)
    # print("Hello" + myname.upper() + "!")
    # msg = "Hello" + myname.upper() + "!" # 也可以赋值给变量

# 制表符和换行符
    # print("\nHello")
    # print("\tHello")
    # print("your information\n\tname:Xiaoming\n\tValue:998\n\tSB:ShiNi")

# 删除右边空格rstrip  左边空格lstrip
    # jydr = 'python  '
    # print(jydr)
    # jydr = jydr.rstrip() # 赋值后才能永久,否则就是临时
    # print(jydr)
    # jydr = '   python'
    # print(jydr.lstrip())

# 数字转字符用 str()
    # age = 23
    # msg = "happy" + str(23) + "HEIHEI"
    # print(msg)

# 列表
    # addr = [1,2,3,4]
    # print(addr)
    # addr = ["you","world","name","hello","32","哈哈","mamade"]
    # print(addr)
    # print(addr[2].title())
# 在索引中,-1 表示最后一个元素 ,-2第二个,-3第三个……
    # print(addr[-1])
    # print(addr[-2])
# 列表元素拼接
    # message = "I am your " + addr[3].title() + " father"
    # print(message)
# 修改列表元素
    # addr[0] = "madegebibi"
    # print(addr)
    # addr.append("nobody")
    # print(addr)
# 创建空列表
addr = []
addr.append('hello')
addr.append("vheihei")
addr.append("wudi")
addr.append('aoslu')
# 插入元素
# addr.insert(2,"data")
# 删除元素
# del addr[1]
    # addr.pop()
    # name = addr.pop(1)
    # print(name)
# 用值移除元素
    # addr.remove('wudi')
# sort将列表按字母排序
    # addr.sort(reverse=True)
# 临时排序显示
    # print(sorted(addr))

# 倒着打印列表(反转)
    # addr.reverse()
    # print(addr)
    
# len 计算列表长度
    # print(len(addr))

二、操作列表

for 循环

magicians = ['alice', 'david', 'carolina']
# for i in magicians:
#     print(i)
for i in magicians:
    print(i.title() + ", the was bigmom!")

range 创建数字列表

for i in range(1, 10):
    print(i)

# list 输出数字列表
lists = list(range(1, 10))
print(lists)

# list 输出递增数值
lists = list(range(1, 100, 20))
print(lists)

# 输出1-10的平方
se = []
for i in range(1, 11):
    square = i**2
    se.append(square)
print(se)

解析列表

# 一行表示,等价于上面的列子
se = [i**2 for i in range(1, 11)]
print(se)

切片

se = ['one', 'two', 'thr', 'for', 'fiv']

# 打印前三个元素
print(se[0:3])
print(se[:3])

# 打印2到4对元素
print(se[1:4])

# 打印3到最后个元素
print(se[2:])

# 打印3到倒数第二个个元素
print(se[2:-1])

# 最后2个元素
print(se[-2:])

遍历切片

se = ['one', 'two', 'thr', 'for', 'fiv']
# 打印后三个元素
for i in se[-3:]:
    print(i.title())

复制列表

se = ['one', 'two', 'thr', 'for', 'fiv']
se2 = se[:]
for i in se2:
    print(i)

元组 [tuple]

元组就是值不可变的列表

core=(200, 50, 112)
print(core)

三、if 语句

1、简单打印案列

se = ['one', 'two', 'thr', 'for', 'fiv']
# 筛选相等
for i in se:
    if i == 'thr':
        print(i.upper())
    else:
        print(i)
        
 # 筛选不等
 for i in se:
    if i != 'thr':
        print(i.upper())
    else:
        print(i)

2、数值对比赋值

# 可用= < > <= >= !=
>>> age=18
>>> age==19
False
>>> age==18
True

3、条件检测

# and 且
>>> ag1 >= 10 and ag2 >= 20
True
>>> ag1 >= 10 and ag2 > 20
False

# or 或
>>> ag1 > 15 or ag2 < 25
True
# in 检查元素是否在列表或元组当中
se = ['one', 'two', 'thr', 'for', 'fiv']
if 'one' in se:
    print("zai zai zai")
# not in 检测不再其中
if 'one1' not in se:
    print("zai zai zai")

4、if 语句案列

age = 5
if age < 4:
    print("less")
elif age >=4 and age < 10:
    print("mid")
else:
    print("big")

四、字典

1、简单案列

# 创建空字典
age = {}

age = {'name':'xiaoming', 'age':18}
print(age['age'])

2、添加键值对

age['xpos'] = 10
print(age)
# {'name': 'xiaoming', 'age': 18, 'xpos': 10}

3、删除一个键值对

del age['name']
print(age)

4、长字典的写法

类似于结构体或者二维数组

love = { 
 'jen': 'python', 
 'sarah': 'c', 
 'edward': 'ruby', 
 'phil': 'python', 
 }

5、遍历字典

love = {
 'jen': 'python',
 'sarah': 'c',
 'edward': 'ruby',
 'phil': 'python',
 }
for key, value in love.items():
    print(key + " love \"" + value + "\" programming language")
# 遍历字典所有的键
for key in love.keys():
    print(key)
# 按字母顺序遍历所有key
for key in sorted(love.keys()):
    print(key.title())
# 遍历字典所有值
for key in love.values():
    print(key.title())
    
# set 可以除去重复的值
for key in set(love.values()):
    print(key.title())

6、字典列表

al0 = {'color': 'green', 'points': 5}
al1 = {'color': 'yellow', 'points': 10}
al2 = {'color': 'red', 'points': 15}

al = [al0, al1, al2]
for i in al:
    print(i)

7、嵌套

通常将列表套入字典,字典也可以嵌入字典

五、用户输入和while循环

1、input() 接收输入

msg = input("Please input char: ")
print(msg)

python2 的接收输入是raw_input()

2、int() 转化为整数

msg = input("Please input char: ")
if int(msg) > 10:
    print("Hello")

3、% 求模

msg = 9 % 2
print(msg)

4、while 循环

num = 0
while num < 10:
    print("I am is " + str(num))
    num += 1

5、在while中退出输入

msg = ""
while msg != "quit":
    msg = input("Input your char: ")
    print(msg)

6、break 退出 while 循环

7、continue 跳过一次循环

8、列表之间的提取移动

old_user = ['Jane', 'Tom', 'Jiry']
new_user = []
while old_user:
    user = old_user.pop()
    print(user)
    new_user.append(user)
print(new_user)

9、删除列表中所有的某一元素

pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']

while 'cat' in pets:
    pets.remove('cat')
print(pets)

10、输入填充字典

exam = {}
keep = 1
while keep <= 3:
    name = input("Input student name: ")
    sorce = input("Please enter score: ")
    exam[name] = sorce
    keep += 1
print(exam)

六、函数

1、定义函数

def show_info():
    print("You are pig!")
show_info()

2、传参

def show_info(name):
    print(name + " are pig!")
show_info('XiaoMing')

3、传实参

def show_info(name, animal='dog'):
    print(name + " likes " + animal)
show_info('XiaoMing')

4、return 返回值

def show_info():
    return 1
print(show_info())

5、可选实参

人名为列,两个字和三个字

def show_name(first, last, mid=""):
    if mid:
        print('name is "' + first + last + mid + '"')
    else:
        print('name is "' + first + last + '"')
show_name('zhang', 'yi', 'de')

6、传递列表

def hello_list(names):
    for i in names:
        print("Hello " + i + "!!!")        
names_list = ['Jine', 'Tom', 'Marya', 'Jikc']
hello_list(names_list)

7、切片传递一个副本列表

def show_list(lists):
    while lists:
        element = lists.pop()
        print(element)
names = ['Jane', 'hah', 'Tom']

# 下面如果不切片,则原列表会被修改
show_list(names[:])
print(names)

8、*号元组 传递任意数量的实参

# *name 意思是创建一个名为name的元组,它收录所有参数
def show_name(*name):
    for i in name:
        print(i)
show_name('ZhangFei', 'LiuBei')
show_name('GuanYu', 'ZhangFei', 'LiuBei')
# 结合参数时,任意形参放在最后
def show_name(age, *name):

9、**号字典,传递任意字典

def build_profile(first, last, **user_info):
    """创建一个字典,其中包含我们知道的有关用户的一切"""
    profile = {}
    profile['first_name'] = first
    profile['last_name'] = last
    for key, value in user_info.items():
        profile[key] = value
    return profile
user_profile = build_profile('albert', 'einstein',
	location='princeton',
	field='physics')
print(user_profile)

10、import 创建导入模块

创建show.py

def show_name(*name):
    for i in name:
        print(i)

在test.py中导入show并且调用

import show
show.show_name('Liubei', 'ZhangFei')
1)导入模块中的某一个或某几个函数
# from 导入模块 import 函数名1,函数名2...
from show import show_name
show_name('Liubei', 'ZhangFei')
2)as 给导入的函数建立别名
from show import show_name as mp
mp('Liubei', 'ZhangFei')
3)导入模块所有函数 (不推荐使用)
from module_name import *

七、类

1、创建一个狗类

定义类名默认用大写,对象用小写,self类似this指针

class Dog():
    def __init__(self, name, age):
        # 初始化小狗名称和年龄
        self.name = name
        self.age = age
    # 趴下
    def prone(self):
        print(self.name.title() + " already prone!")
    # 叫喊
    def yap(self):
        print(self.name.title() + " being yap!")
    # 显示信息
    def show_info(self):
        print("This dog name: " + self.name.title())
        print("This dog age: " + str(self.age))

my_dog = Dog('Huangma', 10)
print(my_dog.show_info())
print(my_dog.prone())
print(my_dog.yap())

2、类继承

疯狗也是狗,狗类作为父类
super()是一个特殊函数,帮助Python将父类和子类关联起来。这行代码让Python调用Mad_dog的父类的方法__init__(),让Mad_dog实例包含父类的所有属性。父类也称为超类(superclass),简称super

# 疯狗
class MadDog(Dog):
    def __init__(self, name, age):
        super().__init__(name, age)

    def virus(self):
        print("你被疯狗 " + self.name + " 传染了狂犬病")

mad_dog = MadDog('BY', 10)
mad_dog.virus()

3、从一个模块中导入多个类

from dog import Dog, MadDog

八、文件操作

1、读取文件案列

with 相当与一个自动的close,obj就是文件描述符或者句柄
使用with时,open返回的对象只能在with代码块可用

with open('/root/pi.txt') as obj:
    buf = obj.read()
    print(buf)
    # 去掉空行
    print(buf.rstrip())

2、逐行读取

file_name = '/root/pi.txt'
with open(file_name) as obj:
    for line in obj:
        print(line.rstrip())

3、操作文件内容

file_name = '/root/pi.txt'
with open(file_name) as obj:
    lists = obj.readlines()

buf = ''
for i in lists:
    buf += i.rstrip()
print(buf)

4、检测生日号码是否在文件数字中

file_name = '/root/pi.txt'
with open(file_name) as obj:
    lists = obj.readlines()

buf = ''
for i in lists:
    buf += i.rstrip()
birthday = input("Enter your birthday: ")

if birthday in buf:
    print("yes! contain!")
else:
    print("no! without!")

5、写入文件

第二个参数可选 r w a r+
注意 ‘w’ 会清空原有数据

file_name = '/root/pi.txt'
with open(file_name, 'w') as obj:
    obj.write("I love you!")
# 写入多行
with open(file_name, 'w') as obj:
    obj.write("I love you!\n")
    obj.write("I love you!\n")
# 在最后行附加 a
with open(file_name, 'a') as obj:
    obj.write("She love you!\n")
    obj.write("He love you!\n")
# 加读写锁案列
import threading
class RWlock(object):    def __init__(self):
        self._lock = threading.Lock()
        self._extra = threading.Lock()
        self.read_num = 0
    def read_acquire(self):
        with self._extra:
            self.read_num += 1
            if self.read_num == 1:
                self._lock.acquire()
    def read_release(self):
        with self._extra:
            self.read_num -= 1
            if self.read_num == 0:
                self._lock.release()
    def write_acquire(self):
        self._lock.acquire()
    def write_release(self):
        self._lock.release()

九、异常

print(5/0) 会报错 ZeroDivisionError
使用 try except 解决这种情况

try:
    print(5/0)
except ZeroDivisionError:
    print("Zero divisor")

1、try-except-else 除法计算器

# 对一个除法计算器进行异常处理
print("Enter two numbers, divede!")
print("Enter 'q' to quit!")

while True:
    one_num = input("\none num is: ")
    if one_num == 'q':
        break
    two_num = input("two num is: ")
    if two_num == 'q':
        break
    try:
        result = int(one_num) / int(two_num)
    except ZeroDivisionError:
        print("Zero divisor")
    else:
        print(result)

2、计算一个文件大约有多少单词

split() 是将一个字符串以空格分隔来创建一个链表的函数

file_name = '/root/man.txt'
try:
    with open(file_name) as obj:
        content = obj.read()
except FileNotFoundError:
    print("Sorry '" + file_name + "' does not exist!")
else:
    # 计算文件大约含有多少个单词
    word_list = content.split()
    number = len(word_list)
    print(file_name + ' has about ' + str(number) + " words")

3、异常时不提示

try:
    print(5/0)
except ZeroDivisionError:
    pass

十、json 存储读取数据

json可以存储列表和字典,很方便

# 存储一个列表
import json
file_name = 'man.json'
numbers = [1, 3, 1, 4, 5, 2, 0]
with open(file_name, 'w') as obj:
    json.dump(numbers, obj)
# 读取一个列表
import json
file_name = 'man.json'
with open(file_name) as obj:
    numbers = json.load(obj)
    print(numbers)
# 显示wife名字,没有就创建一个
import json
file_name = 'wife.json'
try:
    with open(file_name) as obj:
        wife_name = json.load(obj)
except FileNotFoundError:
    wife_name = input("You don't have a wife.\nCreate your wife name: ")
    with open(file_name, 'w') as obj:
        json.dump(wife_name, obj)
else:
    print("Your wife is " + wife_name)

十一、测试代码

写完后测试代码由其重要, 一定要检测bug。
工作的项目关键功能一定要测试代码
加载unittest模块,然后测试

十二、获取shell的输出

python中获取shell命令输出的方法:

import subprocess
output = subprocess.Popen(['ls','-l'],stdout=subprocess.PIPE,shell=True).communicate()
print output[0]
 
import commands
return_code, output = commands.getstatusoutput('ls -l')

import os
process = os.popen('ls -l') # return file
output = process.read()
process.close()

项目

一、数据可视化

# 首先安装软件
apt install -y python3 python3-pip
pip3 install matplotlib

1、绘制平方数折线图

import matplotlib.pyplot as plt
squares = [1, 4, 9, 16, 25]
plt.plot(squares)
plt.show()

2、修改标签名字和线条粗细

上面的案列图示对应是错误的,需要校正,输入如下

import matplotlib.pyplot as plt
number = [1, 2, 3, 4, 5]
squares = [1, 4, 9, 16, 25]
# 传入列表,设置线的粗细度
plt.plot(number, squares, linewidth=5)
# 设置标题和字体大小
plt.title("Square Numbers", fontsize=24)
# 设置x轴名称
plt.xlabel("Number", fontsize=14)
# 设置y轴名称
plt.ylabel("Square", fontsize=14)
# 设置刻度对大小
plt.tick_params(axis='both', labelsize=14)
plt.show()

二、Web应用程序

# 首先创建一个项目文件夹,然后再创建虚拟环境
python3 -m venv venv

# 激活虚拟环境
source venv/bin/activate

# 安装Django
pip3 install Django

# 用Django创建项目在project目录下
django-admin.py startproject project .

# 创建一个移植的数据库
python3 manage.py migrate

# 启动服务,测试是否成功,浏览器输入127.0.0.1:8000
python3 manage.py runserver

# 不关闭上面,再打开一个终端重新进入虚拟环境创建应用程序项目
root@K-ON:web_notes# source venv/bin/activate
(venv) root@K-ON:web_notes# python3 manage.py startapp appname

进入appname 编辑models.py

from django.db import models

# Create your models here.

class Topic(models.Model):
    # 定义一个长度最大200对字符变量
    text = models.CharField(max_length=200)
    # 自动获取当前事件
    date_added = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.text
# 进入project 修改settings.py 在元组最后添加自己的应用

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'appname',
]
# 返回最上层目录,更改数据库(虚拟环境)
python3 manage.py makemigrations appname
python3 manage.py migrate

三、库记录

1、 os 模块

# 执行系统指令
os.system("指令")

# 执行系统指令,并获取打印的数据
obj = os.popen("cat /etc/*release")
print(obj.read())
list_data = obj.split('\n') # 通过换行符将数据切分为列表
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值