目录
1.第一个python程序
用win+R打开DOM命令窗口,输入以下代码:
python hello.py
提示我name ‘hello’is not defined
2.用pycharm编写程序
# -*- coding = utf-8 -*-
# @Time :2022/3/23 16:10
# @Author : 杨静妍
# @File : demo1.py
# @software : PyCharm
print("hello,world")#这是单行注释
print("hello")
2.1标准化输出字符串
# -*- coding = utf-8 -*-
# @Time :2022/3/23 16:10
# @Author : 杨静妍
# @File : demo1.py
# @software : PyCharm
print("标准话输出语句:")
a = 10
print("a的值是",a)
age = 18
print("我的年龄为%d"%age)
print("我的国籍是%s,我的名字是%s"%("中国","小张"))
print("www","baidu","com")
print("www","baidu","com",sep=".")
print("hello word",end="")
print("hello world",end="\t")
print("python")
#输入
password = input("请输入密码:")
print("您刚才输入的密码是",password)
2.2 强制类型转换
a = input("请输入一个数字:")
print(type(a))
'''
输出结果:
请输入一个数字:1
<class 'str'>
您刚才输入的数字是1
'''
print("您刚才输入的数字是%s"%a)
#注意:这里的a是字符串,所以要用%s
a = int(input("请输入一个数字:"))
b = 100 + a
print(b)
'''
请输入一个数字:1
101 #b的值为1+101,字符1转化为了数字1
'''
3.条件判断语句
3.1 知识点
if 条件:
代码块
elif 条件:
代码块
else:
代码块
注意: 1.python中缩进表示一个层级,同一函数体 2.if条件语句后的条件不用加() 3.if 、elif、else后面有冒号:
3.2举例
#剪刀(0) 石头(1)布(2)
#石头大于剪刀 布大于石头 剪刀大于布
#思考:如何保证程序的健壮性?当输入字符串或者非0,1,2之外的数字时,如何报错?
import random
while True:
x = input("请输入数字0-2中的一个数字:")
#print(x)
if x != '0' and x != '1' and x != '2':
print("不要输入0或1或2之外的数字或字符,请输入0或者1或者2")
#首先输入的值有三种情况:
# ①0或者1或者2
# ②除了0且1且2之外的所有数字
# ③字符串
#排除掉后两种情况后,就是正确的输入
else:
x = int(x)
if x == 0:
print("你的输入为:%s(%d)"%("剪刀", x))
elif x == 1:
print("你的输入为:%s(%d)"%("石头", x))
elif x == 2:
print("你的输入为:%s(%d)"%("布", x))
y = random.randint(0,2)
print("随机生成的数字为:",y)
'''
遍历出所有赢的情况:
石头大于剪刀、布大于石头、剪刀大于布、平局
那么剩下的就是输的情况
'''
if x == 1 and y ==0:#石头大于剪刀
print("你赢了")
elif x == 2 and y == 1:#布大于石头
print("你赢了")
elif x == 0 and y == 2:#剪刀大于布
print("你赢了")
elif x == y:
print("平局")
else:
print("O(∩_∩)O哈哈~,你输了")
思路:首先输入的值有三种情况,①0或者1或者2②除了0且1且2之外的所有数字③字符串,排除掉后两种情况后,就是正确的输入。其次,input返回的是字符串,所以Ⅰ在判断时0,1,2是字符串,要写成'0','1','2',逻辑关系是且,都不能是这三个字符才满足①或②要有强制类型转换,把接收到的值转换为整型;Ⅱ遍历出所有赢的情况:石头大于剪刀、布大于石头、剪刀大于布、平局,那么剩下的就是输的情况
4.循环控制语句
3.1 知识点
for i in sequence:
statements(s)
sequence可以是数字也可以是字符串
内置函数 len() 和 range(),函数 len() 返回列表的长度,即元素的个数。 range返回一个序列的数。
3.2 举例
#99乘法表
#for循环
for i in range(1 , 11 , 1):
for j in range(1 , i+1 , 1):
print("%d*%d=%d"%(i , j , i*j), end="\t")
print("\n")
#while循环
i = 1
while i <= 10:
j = 1
while j <= i:
print("%d*%d=%d" % (i, j, i * j), end="\t")
j = j + 1
i = i + 1
print("\n")
5. 字符串
5.1 知识点
内容摘自菜鸟教程
python字符串
字符串是 Python 中最常用的数据类型。
我们可以使用引号('或")来创建字符串。
Python 中三引号可以将复杂的字符串进行赋值。
Python 三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
三引号的语法是一对连续的单引号或者双引号(通常都是成对的用)。
word = "aaa"
sentence = "aaaaa"
paragraph = \'''
hahahahah
hahhahah
ha
'''
print(word)
print(sentence)
print(paragraph)
5.2 转义字符
str_name = 'I\'m a student'
str_name1="I'm a student"
my_str = "Jason says \"I like you\""
print(str_name)
print(str_name1)
print(my_str)
5.3 字符串切片
str = "chengdu"
print(str)
print(str[0])
print(str[0:6])
print(str[0:6:2])
print(str[5:])
print(str[:5])
5.4 字符串拼接
print(str + "你好")#字符串连接使用+
print("hello\nworld")#使用反斜杠\,实现转移字符的功能
print(r"hello\nchengdu")
#在字符串前面加r,表示直接显示原始字符串,不进行转义
#直接显示出来,r直接进行输出,存储打印把别人爬取的内容...没听懂
附:
方法 | 描述 |
---|---|
byte.decode(encoding=‘utf-8’,errors=‘strict’ | python3中没有decode方法,但我们可是使用bytes对象的decode()方法来解码给定的bytes对象,这个bytes对象可以由str.encode()来编码返回 |
encode(encoding=‘UTF-8’,errors=‘strict’) | 以encoding指定的编码格式编码字符串,如果出错报一个ValueError的异常,除非errors指定的是’ignore’或者’replace’ |
isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False |
isalpha() | 如果字符串至少有一个字符并且所有字符都是字母则返回True,否则返回False |
isdigit() | 如果字符串只包含数字则返回True,否则返回False |
isnumeric() | 如果字符串只包含数字字符,则返回True,否则返回False |
join(seq) | 以指定字符串作为分隔符,将seq中所有元素(的字符串表示)合并为一个新的字符串 |
len(string) | 返回字符串长度 |
Istrip() | 截掉字符串左边的空格或者指定字符 |
rstrip | 删除字符串末尾的空格 |
split(str=“”,num=string.count(str),num=string.count(str) | 以str为分隔符截取字符串,如果num有指定值,则仅截取num+1个子字符串 |
isdigit()和isnumeric()的区别?[待补充]
6.列表
6.1 知识点
列表可拼接
print list1 + list2
可重复输出
print list * 2
6.2 列子
#不断询问用户想买什么,用户选择一个商品编号
#就把对应的商品添加到购物车里,最终用户输入q退出时
#打印购买的商品列表
products =[[0,"iphone",6888],[1,"MacPro",14800],[2,"小米6",2499],[3,"Coffe",31],[4,"Book",60],[5,"Nike",699]]
shopping=[]
#定义一个空的列表作为购物车,以后用列表的append()函数将商品追加到购物车中
while True:
x = input("输入一个商品编号:")
if x == 'q':#增加一个判断,判断是否结束输入
break
else:
for product in products:#遍历products列表
if product[0] == int(x):
#取出商品编号 这里需要强制转化,因为input返回字符串
shopping.append(product)
#将编号对应的商品追加至购物车中
print(shopping,end="\t")
print("\n")
enumerate()
函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
7.元组
tup1 =()
tup2 = (50)
tup3 = (50,)
tup4 = (50,60,70)
print(type(tup1))#<class 'tuple'>
print(type(tup2))#<class 'int'>
print(type(tup3))#<class 'tuple'>
print(type(tup4))#<class 'tuple'>
tup1 = ("abc","def",200,2020,333,444,555,666)
print(tup1[0])
print(tup1[-1])#选取最后一个元素
print(tup1[1:5])#切片
#增
tup1 = (12,34,56)
tup2 =("abc","def")
tup = tup1+tup2#连接
print(tup)
#删
tup1 = (12,34,56)
print(tup1)
del tup1
print("删除后")
print(tup1)
#改 #不允许修改
tup1 = (12,34,56)
tup1[0] =100
#TypeError: 'tuple' object does not support item assignment
#查
8.字典
#字典的定义
'''
dict = {"name" : "吴彦祖","age":50}
print(dict["name"])
print(dict["age"])
#访问了不存在的键
#print(dict["gender"])
print(dict.get("name","20"))
print(dict.get("gender","m"))
'''
#【所有的数据结构复习,都可以为增删改查的复习】
#增
#删 del clear
info = {"name":"吴彦祖","age":18}
'''
print("删除前")
print(info["name"])
del info["name"]
print("删除后")
print(info["name"])
print(info)
del info
'''
'''
print("清空前%s"%info)
info.clear()
print(info)
'''
#改
'''
info = {"name":"吴彦祖","age":18}
info["age"]=20
print(info["age"])
'''
#查
info = {"id":1,"name":"吴彦祖" ,"age":18}
'''
print(info.keys())#返回列表
print(info.values())
print(info.items())#返回元组
for key in info.keys():
print(key)
for value in info.values():
print(value)
'''
'''
for key,value in info.items():
print("key=%s,value=%s"%(key,value))
'''
'''
mylists = ["a","b","c","d","e"]
for i,mylist in enumerate(mylists):
print(i,mylist)
'''
9. 集合
s = set([1,2,3])
print(s)#{1, 2, 3}
s = set([1,1,2,2,3,4])
print(s)#{1, 2, 3, 4}
10.小结
可变与不可变是指能不能进行改操作,列表可以改,元组不能改。
【之前没有理解这么深刻,现在理解这么深刻,没有问题,从哪跌倒的,从哪爬起来】
保存数据到Excel
首先课程讲述了,如何,从网页上爬取的数据保存到excel表中。【运用saveData()函数】
保存数据到SQLit
通过建立数据库,连接数据库
conn = sqlite3.connect(dbpath)
cur = conn.cursor()
cur.execute(sql)
sqlite 数据库的创建
每次创建的时候就要创建表,所以要删除
导入数据库得过程。
运用py charm,内置sqlite数据库【存在数据库的创建问题】,进行表的增删改查【在spider.py中 saveData2DB()】
flask框架
一、路由
#路由解析,通过用户访问的路径,匹配响应的函数
@app.route("/index")
def hello():
return "你好"
if _ _name_ _=='_ _main_ _':
app.run(debug = True)
使用debug模式:可以进行实时的更新