python学习笔记(1)

#!/usr/bin/env python3 
# 第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
# -*- coding: utf-8 -*-
# 第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

# 1.python输入和输出
print('hello, world')

# input()函数
# name = input();

name = input('please input your name:')
print('hello,', name)
print('1024 * 768 = ', 1024 * 768)
# input返回的数据类型是str
# 将str转换成整数 int()函数

s = input('please input your birth:')
birth = int(s)
if birth < 2000:
    print('00前')
else:
    print('00后')


# 2. python基础

#2.1 数据类型和变量

# 布尔值
# True False
# 空值
# None

# 变量 同一个变量可以是不同类型的变量
a = 123
print('a =', a)
a = 'ABC'
print('a =', a)

#2.2 字符串和编码
print('''line1
    line2
    ling3''')

print('''line1
line2
ling3''')
# ord()函数获取单个字符的整数表示,chr()函数把编码转换为对应的字符:
# 计算字符串长度
len('ABC')

# 字符编码
# ASCII码 无中文->Unicode 用的存储空间多->UTF-8(可变长编码)
# 中文测试
print('你好,中文测试正常')

# 格式化    %:占位符
print('Hi, %s, you have $%d.' %('Michael', 100000))
print('%.2f' %3.1415926)
# 如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串
print('Age: %s. Gender: %s' %(25, True))

# 2.3 list 和 tuple
# list:变长
# tuple:不可变长

#2.4条件判断
# age = input('please input your age:')
age = 18
if age >= 18:
    print('you are an adult')
elif age >= 6:
    print('you are a teenager')
else:
    print('you are a kid')


# 2.5 循环
# 两种:for...in 和 while 循环

# 2.5.1 for...in 循环
# 下面的for name in names循环指:把names中的每个元素代入变量name,然后执行缩进块的语句
names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)
# sum = 0
# for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
#   sum = sum + x
# print('sum =',sum)

# range()函数:生成序列:从0开始至小于5的整数
sum = 0
for x in list(range(101)):
    sum = sum + x
print('sum = ',sum)

# 2.5.2 while循环
sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print('sum = ', sum)

# test
L = ['Bart', 'Lisa', 'Adam']
for s in L:
    print('Hello, %s!' %(s))

# break
# continue



# test
s1 = 72
s2 = 85
r = (s2 - s1) / s1 * 100
print('%.1f%%' % r)


# test2
height = 1.75
weight = 80.5
bmi = weight / (height * height)
print(bmi)
if bmi < 18.5:
    print('过轻')
elif bmi < 25:
    print('正常')
elif bmi < 28:
    print('过重')
elif bmi < 32:
    print('肥胖')
else:
    print('严重肥胖')

# 2.6 dict 和 set
# dict:相当于其他语言的map
# set:


# 3.函数
# 3.1调用函数

print(abs(-100))
print(max(-110, 100, 2, 30))

# 数据类型转换
print(int('123'))
print(12.33334)
print(1.234)

# 函数别名
a = abs
print(a(-1))

# test
n1 = 255
n2 = 1000
print('255 =', str(hex(n1)))
print('1000 =', str(hex(n2)))


# 3.2定义函数
def my_abs(x):
    if x >= 0:
        return x
    else:
        return -x

print(my_abs(-99))

# 如果已经把my_abs()的函数定义保存为abstest.py文件了,那么可以在该文件的当前目录下启动
# python解释器,用from abstest import my_abs来导入my_abs()函数,注意abstest是文件名(不含.py扩展名)
from abstest import my_abs1
print(my_abs1(-20))

# 空函数
def nop():
    pass

# 参数检查

# 返回多个值
# 返回值是一个tuple
import math

def move(x, y, step, angle = 0):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny

# x, y = move(100, 100, 60, math.pi / 6)
# print(x, y)
r = move(100, 100, 60, math.pi / 6)
print(r)


# test
def quadratic(a, b, c):
    s = b * b - 4 * a * c
    if a == 0:
        x = -c / b
        return x
    elif s == 0:
        x = -b / 2*a
        return x
    elif s < 0:
        return 'No Answer'
    else:
        x1 = (-b + math.sqrt(s)) / (2 * a)
        x2 = (-b - math.sqrt(s)) / (2 * a)
        return x1, x2

r = quadratic(2, 3, 4)
print('quadratic(2, 3, 1) =', quadratic(2, 3, 1))
print('quadratic(1, 3, -4) =', quadratic(1, 3, -4))

if quadratic(2, 3, 1) != (-0.5, -1.0):
    print('测试失败')
elif quadratic(1, 3, -4) != (1.0, -4.0):
    print('测试失败')
else:
    print('测试成功')

# 3.3 函数的参数
# 默认参数


#4. 高级特性
# 4.1 切片 slice
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
print(L[0:3])
# L[0:3] 表示从0开始取,直到索引3为止,但不包括索引3

# def trim(s):
#   if s[0] == ' ':


# 5.模块
# 5.1 使用模块
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

'a test module'

__author__ = 'VoidWalker'

# 第1行和第2行是标准注释,第1行注释可以让这个hello.py文件直接在Unix/Linux/Mac上运行,
# 第2行注释表示.py文件本身使用标准UTF-8编码;
# 第4行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释;
# 第6行使用__author__变量把作者写进去,这样当你公开源代码后别人就可以瞻仰你的大名;
# 以上就是Python模块的标准文件模板,当然也可以全部删掉不写,但是,按标准办事肯定没错。/
# 后面开始就是真正的代码部分。
import sys

def test():
    args = sys.argv
    if len(args) == 1:
        print('Hello, world!')
    elif len(args) == 2:
        print('Hello, %s!' %args[1])
    else:
        print('Too many arguments!')

if __name__=='__main__':
    test()

# 作用域


# 5.2 安装第三方模块

# 在Python中,安装第三方模块,是通过包管理工具pip完成的。
# 注意:Mac或Linux上有可能并存Python 3.x和Python 2.x,因此对应的pip命令是pip3。
# 例如安装Pillow,使用命令pip install Pillow 
# 当用到很多第三方库时,推荐直接使用Anaconda,
# Anaconda是一个基于Python的数据处理和科学计算平台,它已经内置了许多非常有用的第三方库,
# 我们装上Anaconda,就相当于把数十个第三方模块自动安装好了,非常简单易用。
# 安装好Anaconda后,可以尝试直接import numpy等已安装的第三方模块。


# 5.3 模块搜索路径
# 当我们试图加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错:
# ImportError: No module named mymodule
# 如果我们要添加自己的搜索目录,有两种方法:
# 一是直接修改sys.path,添加要搜索的目录:
# >>> import sys
# >>> print(sys.path)
# >>> sys.path.append('/Users/michael/my_py_scripts')
# 这种方法是在运行时修改,运行结束后失效。

# 第二种方法是设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。
# 设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

'常用第三方模块'

# 1.pillow
# PIL:Python Imaging Library:图像处理标准库
# Pillow:支持Python 3.x   文档地址:https://pillow.readthedocs.io/en/5.2.x/

from PIL import Image, ImageDraw, ImageFont, ImageFilter
import random

im = Image.open('test.jpg')
# im.show()
# 获得图像尺寸
w, h = im.size
print('Original image size : %sx%s' %(w, h))

# 应用模糊滤镜
im2 = im.filter(ImageFilter.BLUR)
# im2.show()

# 生成字母验证码图片

# 随机字母
def rndChar():
    return chr(random.randint(65, 90))

# 随机颜色1
def rndColor():
    return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))

# 随机颜色2
def rndColor2():
    return (random.randint(64, 255), random.randint(32, 127), random.randint(32, 127))

# 240*60
width = 60 * 4
height = 60
img = Image.new('RGB', (width, height), (255, 255, 255))
# 创建Font对象
font = ImageFont.truetype('Arial.ttf', 36)
# 创建Draw对象
draw = ImageDraw.Draw(img)
# 填充每个像素
# img.show()
for x in range(width):
    for y in range(height):
        draw.point((x, y), fill = rndColor())
# img.show()
# 输出文字
for t in range(4):
    draw.text((60 * t + 10, 10), rndChar(), font = font, fill = rndColor2())
# 模糊
img = img.filter(ImageFilter.BLUR)
img.show()


# 2.requests
# requests是一个Python第三方库,处理URL资源特别方便
import requests
r = requests.get('https://www.douban.com/')
print(r.status_code)
# print(r.text)

# 带参数的URL,传入dict作为params参数
r = requests.get('https://www.douban.com/search', params = {'q': 'python', 'cat': '1001'})
# 查看链接
print(r.url)
# 查看编码
print(r.encoding)









链接:
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014320027235877860c87af5544f25a8deeb55141d60c5000

猜你喜欢

转载自blog.csdn.net/Void_worker/article/details/81460660