day5
Posted yfzhp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day5相关的知识,希望对你有一定的参考价值。
import json
#json串是一个字符串
f = open(‘product.json‘,encoding=‘utf-8‘)
# res = f.read()
# product_dic = json.loads(res) #把json串,变成python的数据类型
# print(json.load(f)) #传一个文件对象,它会帮你读文件
d = {
‘zll‘:{
‘addr‘:‘北京‘,
‘age‘:28
},
‘ljj‘:{
‘addr‘:‘北京‘,
‘age‘:38
}
}
fw = open(‘user_info.json‘,‘w‘,encoding=‘utf-8‘)
# dic_json = json.dumps(d,ensure_ascii=False,indent=4) #字典转成json,字典转成字符串
# fw.write(dic_json)
json.dump(d,fw,ensure_ascii=False,indent=10) #操作文件
# niuhanyang,123456,北京,13810461234,男
import random,string
# print(string.printable) #代表 数字+字母+特殊字符
#
# print(random.randint(1,10)) #随机取整数
# print(round(random.uniform(1,99),2))#随机小数
# print(random.choice([1,2,3,4])) #只能随机取1个元素
# print(random.sample(string.printable,5)) #随机取N个元素,返回的是list
#洗牌
pickts = [‘A‘,‘J‘,‘Q‘,‘K‘,2,3,4,5,6]
random.shuffle(pickts) #只能传list
print(pickts)
# fw = open(‘username‘,‘w‘)
# fw.write(‘hhhh‘)
# fw.flush() #强制把缓冲区里面的数据写到磁盘上
#1、简单粗暴直接
# 1、打开一个文件,获取到他的所有内容
# 2、对内容进行修改
# 3、清空原来文件的内容
# 4、把新的内容写进去
#syz_niuhanyang,78910\nsyz_zll,78910\nsyz_fyr,78910
f = open(‘username‘,‘a+‘)
f.seek(0)
all_str = ‘‘
for s in f:
new_s =‘syz_‘+s
all_str=all_str+new_s
f.seek(0)
f.truncate() #清空文件内容
f.write(all_str)
f.close()
#打开2个文件
# a文件
# 写一行写到b文件
# a.txt a.txt.bak
# 删掉a文件,b文件名字改成a文件名
# flower
import os
with open(‘words‘,encoding=‘utf-8‘) as fr,open(‘.words.bak‘,‘w‘,encoding=‘utf-8‘) as fw:
for line in fr:
new_line = line.replace(‘花‘,‘flower‘)
fw.write(new_line)
os.remove(‘words‘) #删除文件
os.rename(‘.words.bak‘,‘words‘) #改名
name = ‘谢红‘
#全局变量
#如果要改全局变量的话,那你要先声明一下,你修改值是全局变量
def sayName():
global name
name = ‘刘伟‘
print(‘name1‘,name)
def lw():
age = 28
return age
def setName():
global name
name = ‘摸手哥‘
# sayName()
# setName()
# print(‘name2‘,name)
def op_mysql(host,port,username,password,db,charset,sql):
print(‘连接数据库‘)
op_mysql(
‘192.168.1.1‘,
3306,‘root‘,‘123456‘,‘jxz‘,‘utf-8‘,‘select‘)
op_mysql(
‘192.168.1.1‘,
db=‘sfsdf‘,
charset=‘sdfsdf‘,
sql=‘select * from user;‘
)
# op_mysql(sql=‘select * from user;‘,
# host=‘192.158.11.1‘,
# username=‘sdfdsfs‘,
# password=‘sdf‘,
# db=‘sdfsdf‘,
# charset=‘sdfsdf‘,
# port=‘xx‘
# )
# print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真
# print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真
# print(bin(10))#十进制转二进制
# print(bool(None))#把一个对象转换成布尔类型
# print(chr(69))#打印数字对应的ascii
# print(ord(‘E‘))#打印字符串对应的ascii码
# s=‘nhy‘
d={}
# print(dir(d))#打印传入对象的可调用方法
# exec(‘def a():print("我是a")‘)#执行python代码
# a = eval(‘1+2‘) #也是用来执行python代码的,只能执行一些简单的代码,比如运算,[] {}
# print(a)
# print(filter(lambda x:x>5,[12,3,12,2,1,2,35]))#把后面的迭代对象根据前面的方法筛选
# print(map(lambda x:x>5,[1,2,3,4,5,6]))
# print(max(111,12))#取最大值
# print(min((1,2,3)))#取最小值
# print(abs(-1))#取绝对值的
print(round(11.119999,3))#取几位小数
print(sorted([2,31,34,6,1,23,4]))#排序
# # #
def say(): #函数名
print(‘hello‘)#函数体
#函数不调用是不会被执行的
# say() #调用函数
#函数的参数
def calc(a,b): #形参, 形式参数
#位置参数,必填参数
res = a * b
print(‘%s * %s = %s‘%(a,b,res))
# calc(7,8) #实参,实际参数
def op_file(file_name,conent=None):
#默认值参数,它是非必填的
f = open(file_name,‘a+‘,encoding=‘utf-8‘)
f.seek(0)
if conent:#不为空代表写
f.write(conent)
f.flush()
else:
all_users = f.read()
return all_users #调用完函数之后,返回什么结果
f.close()
# res = op_file(‘a.txt‘)
# print(res)
def haha():
#函数里面遇到return函数就立即结束了
for i in range(5):
print(i)
if i==3:
return #只写一个return的话,就返回None
# res = haha()
# print(res)
import string
def check(pwd):
#长度6-11
#字母和数字吧
if len(pwd)>5 and len(pwd)<12:
if set(pwd) & set(string.ascii_letters) and set(pwd) & set(string.digits):
print(‘密码合法‘)
else:
print(‘密码不合法‘)
else:
print(‘密码不合法‘)
# res = check(‘asd1234‘) #函数里面如果没有return的话,默认返回None
# print(res)
# l = [1,6,8,2,4,8,9]
# print(l.sort())
# print(l)
def is_float(s):
s = str(s)
if s.count(‘.‘)==1:#小数点个数
s_list = s.split(‘.‘)
left = s_list[0] #小数点左边
right = s_list[1] #小数点右边
if left.isdigit() and right.isdigit(): #正小数
return True
elif left.startswith(‘-‘) and left.count(‘-‘)==1 and \
left.split(‘-‘)[1].isdigit() and \
right.isdigit(): #判断合法负小数
return True
return False
# 1.98
# -2.50
# retrun True
# retrun False
# 1.98
# 1.98.23
# -1.90
# 需求分析:
#1、 小数点个数 .count()
# 2、按照小数点进行分割 1.98 [1,98] s.87 98.s1
#3、正小数:小数点左边是整数 右边也是整数 .isdigits()
# 负小数:小数点左边是以负号开头,但是只有一个负号,右边也是整数 -9.85
money = 500
def test(consume): # 500
return money - consume
def test1(money):
return test(money) + money
money = test1(money)
print(money)
def syz(a,*args): #参数组
print(a)
username = args[0]
pwd = args[1]
age = args[2]
# syz(‘niuhanyang‘,‘2423‘,2323)
# syz(‘1s‘,‘sdf‘)
def syz2(time,**kwargs): #关键字参数
print(kwargs)
syz2(‘sdf‘)
syz2(name=‘nhy‘,age=38,time=‘20180912‘)
syz2(‘2018‘,name=‘nhy‘,age=38,addr=‘回龙观‘,home=‘河南‘)
syz2(time=‘xx‘,xx=‘xxx‘)
#1、必填参数还是非必填的
#2、它有没有限制参数个数
#3、它是把传过来的参数放到哪里
import json
def op_data(filename,dic=None):
if dic:#写入进去
with open(filename,‘w‘,encoding=‘utf-8‘) as fw:
json.dump(dic,fw,ensure_ascii=False,indent=4)
else:
with open(filename,encoding=‘utf-8‘) as fr:
return json.load(fr)
FILE_NAME = ‘user_info.json‘
all_users = op_data(FILE_NAME)
for i in range(3):
choice = input(‘输入,1注册,2、删除‘)
if choice==‘1‘:
username = input(‘usenrame:‘)
pwd = input(‘pwd:‘)
if username not in all_users:
all_users[username]=pwd
op_data(FILE_NAME,all_users)
elif choice=="2":
username = input(‘usenrame:‘)
all_users.pop(username)
op_data(FILE_NAME, all_users)
上周回顾:
1、文件操作
读
写
追加
f = open(‘username‘,‘a+‘)
f.seek(0)
for line in f:
print(line)
print(f.readlines())
2、集合
s = set() #去重
s.add(‘xx‘)
#集合是无序的
#函数、
内置函数
python自带的一些函数,直接拿过来能用的
id() #看内存地址
type() #看数据类型
print() #打印
input() #输入
list() #转list
set()# 转集合
str()#转字符串
dict()#转字典
int()#转int
float()#转float类型
len()#取长度
max()
min()
dir() #帮助你的
sorted()#排序
round(11.00011,2)#保留几位小数
map() #下周
filter() #下周
zip() #下周
#模块
#函数:
函数、方法、功能
1、提高代码的复用性
2、让代码更简洁、简化代码
必填参数、默认值参数
#局部变量
函数里面定义的变量,都是局部变量,只能在函数里面用,出了函数之后就不能用了。
#全局变量
公共的变量,都可以用的变量。
1、不安全,因为所有人都可以改
2、全局变量它会一直占着内存
#return
1、把函数处理的结果返回回来
2、结束函数,函数里面遇到return,函数会立即结束
#常量
#一个不变的值
#如果你写了一样功能,那你就要想是不是能把这个功能封装成一个函数
递归:
函数自己调用自己。
模块:
模块其实就是一个python文件
1、标准模块、标准包
#python自带的这些模块,直接import就能用的
import string,random,datetime,os,json
2、第三方模块,别人写好的一些模块,你要安装之后才可以用
#1、傻瓜式的
pip install pymysql
1、没有pip命令的怎么搞:
1、pycharm里面点python console
2、找到python安装目录
3、然后把安装目录下的scripts目录,加入到环境变量里面即可
ps:环境变量在PATH里面加
2、Unknown or unsupported command ‘install‘ 出来这个问提怎么解决
1、打开 C:\strawberry\perl\bin\
2、把这个目录下的pip 都改成其他的名字,这个对其他的没有影响
#2、手动安装
1、whl结尾的安装包
pip install redis-2.10.6-py2.py3-none-any.whl
2、.tar.gz结尾的安装包
1、解压这个压缩包
2、进入到这个解压之后的文件夹里面
3、在命令行里面运行 python setup.py install
3、自己写的python文件
#1、写一个生成双色球号码的一个程序,生成的号码写到文件里面
# 中奖号码由6个红色球号码和1个蓝色球号码组成
# 篮球范围:01-16
# 红球范围:01-33
def swq(num):
random.ranint(1,16)
#tikti.txt
篮球:xx 红球号码是xx 01 08 09 12 13 19
篮球:xx 红球号码是xx 01 08 09 12 13 19
#2、商品管理的程序,商品信息都存在一个json串里面
1、查询商品信息 #校验商品是否存在
2、新增商品 # #校验商品是否存在 #校验价格是否合法
3、修改商品信息 ##校验商品是否存在
if chice =="1":
query_goods()
elif choice = ="2":
add_goods()
def test1():
num = int(input(‘please enter a number:‘))
if num%2==0:#判断输入的数字是不是偶数
return True #如果是偶数的话,程序就退出了,返回true
print(‘不是偶数请重新输入!‘)
return test1()#如果不是偶数的话继续调用自己,输入值
# print(test1())#调用test
#少用递归,递归最多递归999,递归的效率不高。
i = 0
def test():
global i
i+=1
print(i)
test()
test()
以上是关于day5的主要内容,如果未能解决你的问题,请参考以下文章