Python个人学习笔记(一)

从编写程序中练习所学语法

# 猜拳程序
import random

flag = 1
while flag:
    print("你出什么?(0.石头 1.剪刀 2.布):")
    y = int(input())
    x = random.randint(0, 2)
    if x == y:
        print("x=%d y=%d" % (x, y))
        print("平局~")
    elif (x == 0 and y == 1) or (x == 1 and y == 2) or (x == 2 and y == 0):
        print("x=%d y=%d" % (x, y))
        print("你输了")
    else:
        print("x=%d y=%d" % (x, y))
        print("你赢了")
    print("再来一把?(0.不了 1.来嘛)")
    flag = int(input())


# 正反九九乘法表
for i in range(9, 0, -1):
    for j in range(1, i+1):
        k = i * j
        if j < i:
            print("%d*%d=%d" % (i, j, k), end=" ")
        elif j == i:
            print("%d*%d=%d" % (i, j, k))
for a in range(1, 10, 1):
    for b in range(1, a+1):
        k = a * b
        if b < a:
            print("%d*%d=%d" % (a, b, k), end=" ")
        elif j == i:
            print("%d*%d=%d" % (a, b, k))


#   \/  斜杠转义     \' 单引号转义   \" 双引号转义


# 列表List[]   相当于C数组,可修改

products = [["iphone", 6888], ["MacPro", 14800], ["XIaoMi6", 2499], ["Coffee", 31], ["Book", 60], ["Nike", 699]]
print("------商品列表------")
for i in range(len(products)):
    print("%d\t%s\t%d\t" % (i, products[i][0], products[i][1]))
flag = 1
Sum = 0
ShoppingChart = []
while flag != 'q':
    print("想要购买哪件商品?")
    choice = int(input())
    for i in range(len(products)):
        if choice == i:
            print("你选择了第%d件商品\t" % i + "商品信息为:%s\t%d" % (products[i][0], products[i][1]))
            ShoppingChart.append(products[i])
            print("已为您加入购物车~")
            break
        else:
            pass
    print("继续选择.请按任意键       退出.请输入 q ")
    flag = input()
for j in range(len(ShoppingChart)):
    Sum += ShoppingChart[j][1]
    print("%d\t%s\t%d\t" % (j, ShoppingChart[j][0], ShoppingChart[j][1]))
print("您购买的商品总价格为:%d" % Sum)



# 元组tuple   不可修改的数组  ( )  数据强转  tuple(数据变量名)
# 字典dict     字典变量名.get     若键不存在    返回None     del 删除      字典.clear 清空内容
#   字典.keys()    字典.values()    获取所有键/值      字典.items()  以元组类型获取键值对
# 枚举 enumerate    同时获取列表的下标 和 值      字典1.update(字典2)合并
# 集合set  可变不重复

myList = ['a', 'b', 'c', 'd']
for i, x in enumerate(myList):
    print(i+1, x)
'''

# def 函数/方法    多个返回值 return a,b        外部接收 aa,bb= 函数名
'''
def line():
    print('-'*30)
line()
def lines(i):
    print('-'*i)
i = int(input("请输入横线数量:"))
lines(i)
def Sum(a,b,c):
    print("%d %d %d之和为:%d" % (a, b, c, a+b+c))
    return a+b+c
a = 1
b = 2
c = 3
def avg(sum):
    print("%d %d %d三位数和的平均值为:%f" % (a, b, c, (a+b+c)/3) )
avg(Sum(a, b, c))

```python

基本文件读写操作

import os  # 引入读写
# 读写  r w rb wb   只读   只写   读二进制 写二进制  模式
'''
f = open("text.txt", "w")
f.write("hello world!\n")
f.write("hello world!\n")
f.close()
f = open("text.txt", "r")
# content = f.read(10)     # 读一行的10个字符
# contents = f.readline()  只读一行
contents = f.readlines()   # 读所有行 以列表形式打印
print(contents)
i = 1
for j in contents:
    print("%d:%s" % (i, j))
    i += 1
f.close()
os.rename("text.txt", "test1.txt")  # 文件重命名
'''
# 异常捕获 try:   except  IOError  文件找不到属于IO异常(输入输出异常)
# NameError   变量名异常(操作,输出变量未定义)  except(IOError, NameError...)捕获多个异常
# try ...finally   finally:一定会执行   except Exception as result:(跟踪错误)

def Write():
    f = open("gushi.txt", "w")
    f.write("\t春晓\t\n春眠不觉晓,\n处处闻啼鸟。\n夜来风雨声,\n花落知多少。\n")
    f.close()
def ReadAndCopy():
    f = open("gushi.txt", "r")
    ff = open("copy.txt", "w")
    poem = f.readlines()
    for i in poem:
        try:
          ff.write(i)
        except:
            pass
        print(i)
    print("复制完毕!")
    ff = open("copy.txt", "r")
    poemcopy = ff.readlines()
    for k in poemcopy:
        print(k)
    f.close()
    ff.close()
Write()
ReadAndCopy()


正则表达式相关

import re
import sys
import urllib.request

import xlwt
import bs4
import sqlite3
import urllib.parse


data = bytes(urllib.parse.urlencode({"hello": "world"}), encoding='utf-8')
response = urllib.request.urlopen("http://httpbin.org/post", data=data)
print(response.read().decode("utf-8"))


response = urllib.request.urlopen("http://www.baidu.com")
print(response.status)      # 返回状态码
print(response.getheaders())

url = "https://passport.ccf.org.cn/sso/login?from=aHR0cHM6Ly9jc3AuY2NmLm9yZy5jbi9jc3Avc2lnbnVwL3NpZ251cF9pbml0LzhhOWUzNzhlNjliN2NhMzIwMTY5YzIxMTNmY2QwMDAwLmFjdGlvbj9fYWNrPTE="
data = bytes(urllib.parse.urlencode({"hello": "world"}), encoding='utf-8')
headers = {
    "User-Agent": "Mozilla/5.0 (WindowsNT10.0; Win64; x64) "
                  "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
}
req = urllib.request.Request(url=url, data=data, headers=headers, method="POST")
response = urllib.request.urlopen(req)
print(response.read().decode("UTF-8"))
'''
def main():
    url = "https://movie.douban.com/top250?start="

    # askURL(url)
    getData(url)

def askURL(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (WindowsNT10.0; Win64; x64)"
                      "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
    }
    request = urllib.request.Request(url, headers=headers)
    html = ""   # 字符串
    try:
        response = urllib.request.urlopen(request)
        html = response.read().decode("utf-8")
        print(html)
    except urllib.error.URLError as e:
        if hasattr(e, "code"):
            print(e, code)
        if hasattr(e, "reason"):
            print(e.reason)

    return html



def getData(url):
    datalist = []
    for i in range(0, 5):
        URL = url + str(i * 25)
        print("-"*100)
        html = askURL(URL)

    return datalist


if __name__ == '__main__':
    main()
'''

from bs4 import BeautifulSoup

file = open("C:\zhengxin\google.html", "rb")  # rb 读取二进制模式
html = file.read().decode("UTF-8")
bs = BeautifulSoup(html, "html.parser")  # 生成解析BeautifulSoup对象  以树形 层次 结构保存

print(bs.title)  # 打印  第一个  title标签及其内容  ment.Tag
print(bs.title.string)  # ,string 打印  第一个  title标签里的内容  NavigableString
print(bs.img.attrs)  # 以字典(键值对)形式打印 标签里的属性(attributes--------attrs)
print(bs.attrs)
print(bs)   # bs(BeautifulSoup) 类型是document,   即获取的html整个信息文档  属性是空字典 {}
# Comment注释  eg:---新闻---    特殊NavigableString类型 ,打印时不打印注释部分
print(bs.h1.contents)   # 文档的遍历  以列表[]形式打印标签里的内容  ,可用下标访问  contents[1]
# 文档的搜索
# t_list = bs.find_all("a")  # find_all(TAG) 找出html文档中所有tag的内容,以列表[] 形式存储
# print(t_list)


# 正则表达式搜索
T_list = bs.find_all(re.compile("l"))  # 搜索正则表达式规则"l"的所以内容
print(T_list)

# 用方法定义搜索模式 ,用for...in List 逐条打印
print("-"*50)
def id_is_exists(tag):
    return tag.has_attr("id")

List = bs.find_all(id_is_exists)

for item in List:
    print(item)

# 参数形式 搜索    直接在find_all() 中赋值标签的参数   若找class标签参数  class_ = True    //class为类的保留词 故为class_
List = bs.find_all(id="target")
List = bs.find_all(id="target", limit=1)   # 参数limit=?    搜索前n个符合表达式的标签内容
for item in List:
        print(item)

# css选择器
t_list = bs.select('h1')    #按标签查找

t_list = bs.select('.manv')    #  .+类属性值    代表class的属性值

t_list = bs.select('#target')    # #+id标签属性值

t_list = bs.select("a[href]")   # a[属性href]    通过标签a 里的属性值(href)搜索

t_list = bs.select("div > a")   # div  > a > ... 通过子标签逐层搜索 即 <div 标签里的 <a 标签

t_list = bs.select(".manv ~ .bri")   #直接访问与class = manv 同一层次的 class = bri    即兄弟节点
print(t_list[0].get_text())    #获取第一个元素(下标为0)的文本
print(t_list)












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值