Python基础知识汇总

字典与字符串的转换,以及json文件的读写操作

import json
d={"name":"Tony","Age":18}#
print(type(json.dumps(d)))#

s='{"name":"Tony","Age":18}'#
print(type(json.loads(s)))#

s1={"Name":"ChyiChin","Age":100}
f=open('1.json','w',encoding='utf-8')
json.dump(s1,f)#写入到1.json文件里
f.close()

f2=open('1.json','r',encoding='utf-8')
info=json.load(f2)#加载1.json文件内容
f2.close()
print(info)#{'Name': 'ChyiChin', 'Age': 100}

判断是否是质数(素数)

#判断是否是质数(一般领域对于正整数,如果用到2到n的平方根去整除,无法整除则为质数)
from math import sqrt
def is_prime(n):
    if n==1:return False
    for i in range(2,int(sqrt(n))+1):
        if n%i==0:return False
    return True
print(is_prime(2))

#注意缩进
i=2
while i<10:
    j=2
    while j<=i/j:
        #print("j=>",j)
        #print(i/j)
        if not(i%j):break#i%j==1,not,能被整除就跳出循环
        j=j+1
    if j>i/j:print(i,"是素数")
    i=i+1

#打印n内的质数
def print_primes(n):
    num=[]
    for i in range(2,n):
        for j in range(2,i):
            if i%j==0:break#能被整除则跳出循环
        else:num.append(i)#for..else..
    print(num)
print_primes(30)

#求区间内的质数,并统计个数
def primesnums(v1,v2):
    num=[]
    for i in range(v1,v2+1):
        for j in range(2,int(i/2+1)):
            if i%j==0:break
        else:num.append(i)
    return num
print("区间质数:",primesnums(2,100))
print("质数个数:",len(primesnums(2,100)))

列表,字典

#列表是方括号[],元组是圆括号(),字典是花括号{}
#遍历嵌套
num_list=[[1,2,33,7],[65,3,2]]
for i in num_list:
    for j in i:
        print(j)

list1=[2,3,3,34,9,10]
print(list1[1:4])#[3, 3, 34]
print(list1[:-1])#[:-1]从第一个遍历到倒数第二个元素[2, 3, 3, 34, 9]
print(list1[-1])#倒数第一个元素,10
print(list1[1:])#第二个元素开始截取[3, 3, 34, 9, 10]
print(max(list1),min(list1))#最大值和最小值
list1.insert(2,'中国')#在第二个索引位置插入对象[2, 3, '中国', 3, 34, 9, 10]
print(list1)
list1.extend([777,5])#扩展新的列表[2, 3, '中国', 3, 34, 9, 10, 777, 5]
print(list1)
print(list1.pop(2))#移除列表中的元素并返回该元素,中国
list1.reverse()
print(list1)#反转列表中元素[5, 777, 10, 9, 34, 3, 3, 2]
list1.sort()
print(list1)#排序[2, 3, 3, 5, 9, 10, 34, 777]

#5行三列,二维列表
list_2d=[['' for col in range(3)] for row in range(5)]
list_2d[1].append('厉害')
list_2d[1].append('了')
list_2d[3].append('我的')
list_2d[4].append('国')
print(list_2d)

#list1和list1[:]不一样
print(id(list1))
print(id(list1[:]))

#remove是按照内容删除,del是按照删除元素的位置
list1.remove(34)
print(list1)
print(len(list1))
del(list1[3])
print(list1)

#字典,键-区分大小写,值-可以是任意类型
dict={'name':'Tony',12.3:'数值也可以'}
print(dict[12.3])#数值也可以, 键值对,键是不可变
dict['Country']='China'
print(dict)#{'Country': 'China', 'name': 'Tony', 12.3: '数值也可以'}
dict['country']='USA'
print(dict)#{'Country': 'China', 'name': 'Tony', 12.3: '数值也可以', 'country': 'USA'}
del dict['Country']
print(dict)#{'country': 'USA', 12.3: '数值也可以', 'name': 'Tony'}
dict.clear()#清空
print(dict)
del dict#删除
dict1={'a':[12,3,22,34]}
print(dict1['a'][2])#22
dict2={'a':{'aa':'bb'}}
print(dict2['a']['aa'])#bb
#遍历字典
users={'Tony':{"Tall":173,"Weight":"70KG"},'ZhangSan':{'Tall':178,"Weight":"80KG"}}
for username,userinfo in users.items():
    print(username)
    print(str(userinfo["Tall"])+"-"+userinfo["Weight"])

文件内容的相关操作:

# encoding:utf-8
import os

'''
文件内容的读取
Ctrl+Alt+L格式化代码
'''
f1 = open("1.json")
str0 = f1.read()
print(str0)

f2 = open("1.json")
str2 = f2.readline()
while str2:
    print(str2)
    str2 = f2.readline()
f2.close()

for i in open("1.json"):
    print(i)

fo = open("a.txt", "w")
fo.write("chon什么啊ao\n哈哈你好啊\n是")
fo.close()

f = open("a.txt", "r")
str = f.read(6)
print(str)

position = f.tell()
print(position)

f.seek(0, 1)
str1 = f.read()
print("hello"+str1)


'''
目录的新建删除改名
'''
os.rename("a.txt", "aa.txt")
os.remove("aa.txt")

os.mkdir("test")
os.chdir("test")
os.getcwd()
print(os.getcwd())
os.rmdir("../test")

print(os.defpath)

numpy库(一个很重要的库)

import numpy as np
s1=np.array([60,75,75,80,60]);#分数组1
s2=np.array([40,100,95,45,70]);#分数组2
s1_avg=np.mean(s1);#平均值,两者都是70
s2_avg=np.mean(s2);
print(np.sqrt(((s1-s1_avg)**2).sum()/(s1.size-1)))#9.354143466934854
print(np.sqrt(((s2-s2_avg)**2).sum()/(s2.size-1)))#27.613402542968153

上面这个是一个标准差的公式,\sqrt{(\sum_{i=0}^{N}(x_{i}-r)^{2})/(N-1)}[其中r是平均值],可以看出分数组2的标准差比较大,意味着离散程度很高,也就是说这个学生偏科偏的严重哈哈!当然在numpy库里面是有自带的标准差函数的,如下:

print(np.std(s1,ddof=1));
print(np.std(s2,ddof=1));

pickle文件(序列化对象到文件,做持久性的存储)

import pickle as pk
t1=('Tony','ChyiChin',123,['baidu.com','google'])
f1=open('t.pkl','wb')
pk.dump(t1,f1,True)
f1.close()

如果想存储在指定位置,需要进行路径转换,如: os.chdir('E:'),不然默认就是当前目录,当前目录在什么位置,os.getcwd()或os.path.abspath('.'),其中当前目录(.)和父级目录(..)也可以通过这样获得os.curdir和os.pardir

上面是将t.pkl文件存放在E盘,可以打开看下,现在将这个文件加载,还是可以还原成对象

f2=open('t.pkl','rb')
t2=pk.load(f2)
f2.close()
t2


 ('Tony', 'ChyiChin', 123, ['baidu.com', 'google'])

你可能感兴趣的:(Python,python,开发语言,后端)