Mooc的Python3学习笔记

文章目录

  • 一些优秀的博主
  • 仅供自己查阅!!!
  • 首先是掌握基本语法!
  • 内置的运算符函数
  • 函数模块补充知识点
    • pass
    • 函数返回多个值
  • 关于默认参数使用的注意事项
  • 可变参数的使用方法
  • 天天向上代码
  • 单元测试
  • 异常处理代码
  • 单例模式
  • Python 中的 if __name__ == '__main__' 该如何理解
  • python环境搭建和pycharm的安装配置及汉化(零基础小白版)
  • PyCharm和git安装教程
  • 爬虫
    • 简单例子1
    • 简单例子2
    • BeautifulSoup的使用1
    • BeautifulSoup的使用1

一些优秀的博主

http://blog.konghy.cn/
廖雪峰大牛
Python3教程

仅供自己查阅!!!

首先是掌握基本语法!

先来几个代码

str1 = input("请输入一个人的名字:")
str2 = input("请输入一个国家的名字:")
print("世界这么大,{}想去看看{}:".format(str1,str2))
  • 1到N求和
n = input("请输入一个整数:")
sum = 0

for i in range(int(n)):
    sum += i + 1
print("1到N求和的结果:",sum)
  • 乘法口诀表
for i in range(1,10):
    for j in range(1,i +1):
        print("{}*{}={:2}  ".format(j,i,i*j),end = '')
    print('')
  • 打印1! + 2! + 3! + …10!
sum , tem = 0, 1
for i in range(1,4):
    print("{}".format(i))
for i in range(1,4):
    tem = i * tem
    sum += tem
print("{}".format(sum))
  • 猴子吃桃问题!
n = 1
for i in range(5,0,-1):
    n = (n + 1) << 1
print(n)

  • 摄氏度和华氏度温度转换
TempStr = input("")

if TempStr[0] in ['F','f']:
    C = (eval(TempStr) -32 ) /1.8
    print("{:.2f}C".format(C))
elif TempStr[0] in ['C','c']:
    F = 1.8 * eval(TempStr) + 32
    print("{:.2f}F".format(F))
else:
    print("输入格式错误")
  • 转义字符处理方法
    r’‘表示’'内部的字符串默认不转义
# -*- coding: utf-8 -*-
n = 123
f = 456.789
s1 = 'Hello, world'
s2 = 'Hello, \'Adam\''
s3 = r'Hello, "Bart"'
s4 = r'''Hello,
Lisa!'''

可以看看这几个输出结果,在理解一下转义字符吧

Hello, world 
Hello, 'Adam' 
Hello, "Bart" 
Hello, 
Lisa! 

内置的运算符函数

  • 这个要看,比较常用,掌握基本的意义
    https://www.cnblogs.com/xiao1/p/5856890.html

函数模块补充知识点

加入定义了一个函数,我们先不写,但是其他模块写好了,要跑一下看看效果,可是这个函数没有内容编译器会报错这个时候有一个概念

pass

  • 空函数
def nop():
    pass

这样子让代码是可以顺利编译运行的

if age >= 18:
    pass

函数返回多个值


def TestReturnValue(a, b, c, d):
    return a + b, c * d

num1, num2 = TestReturnValue(1, 2, 3, 4)

print(num1, num2)

r = TestReturnValue(1, 2, 3, 4)
print(r)

运行结果

3 12
(3, 12)

Process finished with exit code 0

原来返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。《廖雪峰老师解释》

关于默认参数使用的注意事项

  • 如果你没有第一种写法,就会出现如下输出所示的错误。本来指向给你的输出后面加一个‘END’,但是每次调用就会多一个’END’。
def add_end_Right(L=None):
    if L is None:
        L = []
    L.append('END')
    return L

def add_end_False(L=[]):
    L.append('END')
    return L

print(add_end_Right())
print(add_end_Right())
print(add_end_Right())

print(add_end_False())
print(add_end_False())
print(add_end_False())
  • 输出结果

['END']
['END']
['END']

['END']
['END', 'END']
['END', 'END', 'END']

可变参数的使用方法

def Calculation(*num):
    count = 0
    for i in num:
        count += i
    return count


print(Calculation(1,2,3,4))

  • 输出
10

天天向上代码

import math
dayup = math.pow((1.0 + 0.005), 365)
daydown = math.pow((1.0 - 0.005),365)

print("向上:{:.2f},向下:{:.2f}.".format(dayup,daydown))
def dayUP(df):
    dayup = 0.01
    for i in range(365):
        if i % 7 in [6,0]:
            dayup = dayup * (1 - 0.01)
        else:
            dayup = dayup * (1 + df)
    return dayup

dayfactor = 0.01
while(dayUP(dayfactor) < 37.78):
    dayfactor += 0.001

print("每天努力参数是:{:.3f}.".format(dayfactor))

单元测试

原文链接

单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。

比如对函数abs(),我们可以编写出以下几个测试用例:

输入正数,比如1、1.2、0.99,期待返回值与输入相同;

输入负数,比如-1、-1.2、-0.99,期待返回值与输入相反;

输入0,期待返回0;

输入非数值类型,比如None、[]、{},期待抛出TypeError。

把上面的测试用例放到一个测试模块里,就是一个完整的单元测试。

如果单元测试通过,说明我们测试的这个函数能够正常工作。如果单元测试不通过,要么函数有bug,要么测试条件输入不正确,总之,需要修复使单元测试能够通过。

异常处理代码

try:
     
except :
    

except :
    
except:
    
else:
    
finally:
    

单例模式

class Singleton(object):
    class _A(object):
        def __init__(self):
            pass

        def display(self):
            return id(self)
            
    _instance = None

    def __init__(self):
        if Singleton._instance is None:
            Singleton._instance = Singleton._A()

    def __getattr__(self, attr):
        return getattr(self._instance, attr)


if __name__ == '__main__':
    s1 = Singleton()
    s2 = Singleton()
    print(id(s1), s1.display())
    print(id(s2), s2.display())

代码的解释
def getattr(self, attr):
return getattr(self._instance, attr)

# 例如这里有一个类 A ,,有两个属性
>>> class A:
...     test1 = "this test1"
...     test2 = "this test2"
...
>>>

# 然后实例化一个对象
>>> a = A()

# 就可以用 getattr  直接去获取对象 a 的属性值
>>> getattr(a, "test1")
'this test1'
>>>
>>> getattr(a, "test2")
'this test2'
>>>

Python 中的 if name == ‘main’ 该如何理解

http://blog.konghy.cn/2017/04/24/python-entry-program/

python环境搭建和pycharm的安装配置及汉化(零基础小白版)

https://blog.csdn.net/ling_mochen/article/details/79314118#commentBox

PyCharm和git安装教程

https://blog.csdn.net/csdn_kou/article/details/83720765

爬虫

学习资源是中国大学mooc的爬虫课程。《嵩天老师》
下面写几个简单的代码!熟悉这几个代码的书写以后基本可以完成需求!

简单例子1

import requests

r = requests.get("https://www.baidu.com")
fo = open("baidu.txt", "w+")
r.encoding =  'utf-8'
str = r.text
line = fo.write( str )

简单例子2

import requests
url = "https://item.jd.com/2967929.html"
try:
    r = requests.get(url)
    r.raise_for_status()//如果不是200就会报错
    r.encoding = r.apparent_encoding//转utf-8格式
    print(r.text[:1000])//只有前1000行
except:
    print("False")
 fo.close()

BeautifulSoup的使用1

fo = open("jingdong.md","w")

url = "https://item.jd.com/2967929.html"
try:
    r = requests.get(url)
    r.encoding = r.apparent_encoding
    demo = r.text
    soup = BeautifulSoup(demo,"html.parser")
    fo.write(soup.prettify())
    fo.writelines(soup.prettify())
except:
    print("False")

fo.close()

BeautifulSoup的使用1

fo = open("baidu.md","w")

try:
    r = requests.get("https://www.baidu.com")
    r.encoding = r.apparent_encoding
    demo = r.text
    soup = BeautifulSoup(demo,"html.parser")
    fo.write(soup.prettify())
    fo.writelines(soup.prettify())
except:
    print("False")
fo.close()

附赠
爬虫和python例子开源链接

你可能感兴趣的:(python3笔记,python3)