学习记录003-json/切片/函数

关于进行文件读取的时候的.flush方法:

数据处理完了都是从内存写到磁盘,但是由于用户频繁和磁盘有交互,内存有缓冲区,所以这样的情况下就是内存写满之后再往次磁盘放,导致用户和磁盘之间频繁的交互不会实时输出看到,所以可以使用文件的.flush方法=====》文件.flush()

【json】

文件里面存放的都是字符串

json串只能由双引号构成,这也是区分和字典的外在显示

json文件就是字符串,那么如何操作字典转化成json/字符串,从而写进文件呢?

# 下面这个是字典
d = {
    "姓名":"郭等等",
    "age":26,
    "颜色":"蓝色",
    "喜欢的运动":"跑步"
}
# 知识点:字典转化成字符串然后写进文件,因为文件里面只存字符串
import json
with open("abc.json","w",encoding="utf-8") as fw:   #如果为了文件的颜色渲染,文件结尾为json格式就好了
    # s = json.dumps(d,ensure_ascii=False,indent=4)   #把字典转成json字符串,如果字典里面有中文需要转换/需要缩进,字典后面加方法
    # fw.write(s)
    json.dump(d,fw,ensure_ascii=False,indent=4)    #这个方法也可以操作字典转化成字符串

其中的【ensure_ascii=False】方法是为了解析字典里面的中文,不至于写进文件有乱码;而indent=4的作用是:假如字典长度过长,那么写进文件就是一行,为了查看方便使用该方法,他的作用是写进文件字典有4个缩进空格

那么操作文件的字符串转化成字典呢?

# 知识点:字符串转成字典
with open("abc.text",encoding="utf-8") as fw:
    # result = fw.read()
    # dic = json.loads(result)  #字符串转成字典
    # print(type(dic))
    result = json.load(fw)   #这个方法也可以操作字符串转化成字典
    print(result)

【切片】

理解:

切片就是对List一个范围的取值,也就是List取值的一个方式

进行循环List的时候,不要删除List里面的元素,不然会造成下标错乱

切片的取值原则是:内容顾头不顾尾

#下面是个List
list = ["name","age","id","class"]
print(list[1:])   #切片取得内容顾头不顾尾
# [0:2]:结果为前两位元素
# [:]   结果为列表所有元素
# [1:]  结果为第一位元素至最后

关于查看列表的内存地址:

print(id(List))

根据内存地址引申出两个概念:深拷贝和浅拷贝

如果两个列表内存地址一致的话,那么就会造成如果进行其中一个列表元素的修改,另外一个列表的元素也会有影响,这就叫做浅拷贝

# 浅拷贝:两个列表内存地址id一致的情况,进行操作其中一个列表,另外一个列表也会有影响,则这种叫做浅拷贝
# stus = ["guo","ya","nan"]
# stus2 = stus
# stus.append("deng")
# print(stus2)
# stus2.remove("guo")
# print(stus)

深拷贝的概念是进行其中一个列表元素的修改,另一个列表的元素不会有影响:

# import copy
# stus = ["guo","ya","nan"]
# stus2 = stus[:]
# stus = copy.deepcopy(stus)
对范围内的取值:计算间隔数的时候可以把间隔数减1计算取值:
List = [1,2,3,4,5,6,7,8,9,10]   #这是一个列表
print(List[0:10:3])    
#进行范围内的取值:0和10分别代表取值元素范围的开始和结束,3代表在这个范围内间隔几个进行取值, 计算间隔数的时候可以把间隔数减1,比如这个List输出为:[1,4,7,10]

备注:只要可以通过下标进行取值的都可以使用切片,比如list,元组,字符串,字典不可以,因为字典不可以通过下标取值

【非空即真,非零即真】

( 1 )非空即真=====>空的就是假的,只要不是空的就是真的

# name = input('请输入名称:').strip()
#name =''(空字典、空字符串、空元组都算空)
# a= ''
# b=[]
# c={}
# d=None
# if name:
#     print('输入正确')
# else:
#     print('name 不能为空')   #如果是空的,就走else,如果不是空的,就走if

( 2 )非零即真=====>零就是假的,只要不是零就是真的

# name1 = input('请输入名称:').strip()
# name1 = int(name1)
# if name1:
#     print('输入正确')
# else:
#     print('name 不能为空')

【列表生成式】

result = [str(i).zfill(2) for i in range(1,10)if i < 8]
print(result)

分为操作区域,循环区域,条件判断;首先执行循环,随后是判断,最后是操作

【三元表达式】

# 三元表达式:先写结果随后进行if else条件判断
# 判断身份证倒数第二位是偶数or奇数,如果是后者就是男性
# 第一种写法:
# card_id = "130923199301206123"
# if int(card_id[-2])%2 ==0:
#     print("你是个女生")
# else:
#     print("你是个男生")
# 第二种写法:
# sex = "你是个女生" if int(card_id[-2])%2 ==0 else "你是个男生"
# print(sex)

【集合】

   集合有去重的属性,比如List = [1,1,2,3,4,5,5]  查看输出:

List = [1,1,2,3,4,5,5]
print(set(List))

# 输出:{1, 2, 3, 4, 5}

   定义空集合/添加元素/删除元素

# 定义空集合
s= set()
# 集合添加元素
s.add(1)
print(s)
# 集合删除元素
s.remove(1)
print(s)

交集/并集/差集:对称差集,一般差集

# 交集:两个集合里面都有的元素
# l1 = ["郭等等","刘钊","韩梅梅","测试"]
# l2 = ["郭等等","测试","齐磊","李雷"]
# 找两个集合的交集有哪些元素
# xingneng = set(l1)
# zidonghua = set(l2)
# print(xingneng.intersection(zidonghua))   方法001
# print(xingneng & zidonghua)               方法002



# 并集:俩集合添加到一起的元素,但是没有重复
# l1 = ["郭等等","刘钊","韩梅梅","测试"]
# l2 = ["郭等等","测试","齐磊","李雷"]
# xingneng = set(l1)
# zidonghua = set(l2)
# print(xingneng.union(zidonghua))

# 差集:第一个集合里面减去两个集合的交集元素,剩余的元素输出为差集
# l1 = ["郭等等","刘钊","韩梅梅","测试"]
# l2 = ["郭等等","测试","齐磊","李雷"]
# xingneng = set(l1)
# zidonghua = set(l2)
# print(xingneng.difference(zidonghua))

# 一般差集:把两个集合里面的交集都去除
# l1 = ["郭等等","刘钊","韩梅梅","测试"]
# l2 = ["郭等等","测试","齐磊","李雷"]
# xingneng = set(l1)
# zidonghua = set(l2)
# print(xingneng.symmetric_difference(zidonghua))
# 对称差集
# print(xingneng ^ zidonghua)

【函数】important

定义函数:函数里面包含的主要是实现的功能;一个函数里面尽量只有一个功能,避免代码长度过长

注意:函数名称最好见名知意

关于函数的变量:在一个函数里面定义的变量,出了函数就不能用了

关于“return”:定义函数的时候需要想清楚是否需要返回值,如果需要,在函数里面需要用return来接收返回值;在一个函数里面如果遇见return,函数立即结束

定义函数

def Login():
    print("请输入用户名字:")
Login()

函数的返回值

def jiafa(a,b):
    result  = a + b
    return result   #拿到返回值
sum = jiafa(1,1)
print(sum)

默认参数值:如果在形参上给定参数默认值,那么实参里面如果不加值就会默认赋予一开始的形参值

# 默认值参数(那么调用的时候该参数不是必须填写项)
# def register(name,age=27):
    # print("%s,%s写入数据库"%(name,age))
# register("郭等等")
# register("李雷","23")

【random模块】import random

===>random.randint()   在某个范围内随机取整数

===>random.sample("这里是字符串,这里是字符串,这里是字符串",数字)      进行字符串几位数字的取值,输出的是一个List,可转化成字符串

# random_list = random.sample("abcdsghjkjj",3)
# print("".join(random_list))

===>random.shuffle()   进行List的洗牌

# 进行list的洗牌
# list = [1,2,3,4]
# print(random.shuffle(list))
# print(list)

【string模块】import string

import string
# print(string.digits) #所有的整数
# print(string.ascii_lowercase) #所有的小写字母
# print(string.ascii_uppercase)  #所有的大写字母
# print(string.ascii_letters)  #所有的小写和大写字母
# print(string.punctuation)  #所有的特殊负号
# print(random.uniform(1,9))  #随机产生一个小数
# print(random.choice("12345678"))  #在字符串里面随机产生一个数字

 

 

 

Other:心很浮躁,记性很不好,老师课上讲的也理解,但是自己一敲代码就全然不知道哪儿对哪儿,幸好只上了三节课,所以我决定下节课上课之前去奥森跑一圈,这样的状态可不行啊小姐姐,稳着一步步来可好?

 

 

 

   

 

转载于:https://www.cnblogs.com/guodengdeng/p/11001135.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要向 MySQL 存入结构体切片,可以使用 Go 语言中的 database/sql 包和第三方库如 go-sql-driver/mysql。 以下是一个简单的示例代码,假设已经定义了一个结构体类型 User: ```go type User struct { ID int `json:"id"` Name string `json:"name"` Age int `json:"age"` Location string `json:"location"` } ``` 首先,需要创建一个数据库连接: ```go import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database_name") if err != nil { fmt.Println(err) return } defer db.Close() } ``` 接下来,可以使用 SQL 语句和结构体切片来插入数据: ```go func main() { db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database_name") if err != nil { fmt.Println(err) return } defer db.Close() users := []User{ {1, "Alice", 25, "New York"}, {2, "Bob", 30, "London"}, {3, "Charlie", 35, "Paris"}, } stmt, err := db.Prepare("INSERT INTO users (id, name, age, location) VALUES (?, ?, ?, ?)") if err != nil { fmt.Println(err) return } defer stmt.Close() for _, u := range users { _, err := stmt.Exec(u.ID, u.Name, u.Age, u.Location) if err != nil { fmt.Println(err) return } } } ``` 这个示例将三个 User 结构体插入到名为 users 的 MySQL 数据库表中。使用 Prepare() 函数准备 SQL 语句,然后使用 Exec() 函数执行插入操作。在循环中遍历结构体切片,将每个元素插入到数据库中。 注意,这只是一个简单的示例。在实际应用中,还需要考虑并发访问、数据类型转换、错误处理等方面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值