1.基本数据类型
#jupyter中,shift+tab可以查看函数的帮助
#点击一次查看简略说明,点击两次查看完整说明
'''
基本数据类型:
integer
整型(整数类型)
1
5
100
float
浮点型(小数)
0.1
3.1415
189.153
string
字符串型
"This is a string"
"123"
'123'
'''
2.基本运算符
"""
运算
+ 加
- 减
* 乘
/ 除
% 取余
// 取整
变量
"""
a = 1
b = 2
c = a + b
print("a+b=",c)
print(2**4)#2的4次方
print(8/4)#除法的结果是float型
print(5/3)
print(8//4)#除法取整的结果是int型

3.while循环与for循环
condition = 1
print("while循环:")
while condition < 5:
print(condition)
condition += 1 #condition = condition + 1
print("------\n" , 'for循环1:')
for i in range(5):
print(i)
print("------\n" , 'for循环2:')
for i in range(2,6):#循环从2开始,到6结束,总共循环4次
print(i)
print("------\n" , 'for循环3:')
for i in range(1,10,2):#循环从1开始,到18结果,每次递增2
print(i)

4.列表
a_list = [1,2,30,30,30,4,2]#列表,列表索引是用0开始的
print(a_list)
print(a_list[1])#打印列表中第1个元素
print(a_list[5]) #打印列表中第5个元素
print(a_list[-2]) #打印列表中倒数第2个元素,倒数的时候索引是从1开始的
print("-------------------------")
print(a_list[1:4]) #打印列表中第1到第4个元素
print(a_list[:-2])#从头打印列表直到倒数第2个元素
print(a_list[-3:])#打印列表后三个元素
print("-------------------------")
for content in a_list:#打印列表内容,相当于Php的foreach
print(content)
print("-------------------------")
print(len(a_list))#打印列表的长度
print(a_list.index(30))#打印列表中30首次出现的位置
print(a_list.count(30))#统计列表中30出现的次数
print("-------------------------")
a_list.sort()#列表正序排序,排序后原来的列表顺序就改变了
print(a_list)#[1, 2, 2, 4, 30, 30, 30]
a_list.sort(reverse=True)#列表倒序排序
print(a_list)#[30, 30, 30, 4, 2, 2, 1]

5.列表操作和多维列表
a_list = [1,2,30,30,30,4,2]
print(a_list)
a_list[0] = 100 #修改列表中第0个元素
print(a_list)
a_list.append(200) #在列表末尾添加一个元素
print(a_list)
a_list.insert(3,300) #在列表中索引为3的位置加入一个元素300,其它的元素则依次后移一个位置
print(a_list)
print("-------------------------")
del a_list[3] #删除列表索引为3的元素
print(a_list)
a_list.remove(30) #删除列表中的一个首次出现的值为30的元素
print(a_list)
a = a_list.pop()#将列表中最后一个元素删除并返回
print(a)
print(a_list)
print("-------------------------")
b_list = [[1,2,3],
[4,5,6],
[7,8,9]]#多维列表
print(b_list[1])#打印多维列表中的第二行,索引是0开始
print(b_list[2][1])#打印多维列表中第三行的第二个元素

6.元组
#元组定义的两种方式,元组查看元素的方式和列表一样
#但元组定义好后,就不能对其中的值进行任何修改,包括排序
#改变元组变量的唯一方式就是对该变量重新赋值
a_tuple = (1,2,30,30,4,5)
b_tuple = 1,2,30,30,4,5
print(a_tuple)
print(b_tuple)
print(a_tuple[1])
print(a_tuple[1:4])
print(a_tuple.count(30))
print("-------------------------")
for i in a_tuple:
print(i)
print("-------------------------")
a_tuple = (1,2,3,4)
print(a_tuple)

7.if条件语句
'''
> 大于
>= 大于等于
< 小于
<= 小于等于
== 等于
!= 不等于
and 并且
or 或者
'''
a = 1
b = 2
c = 3
d = 1
if a == b:
print("a==b")
elif a == c:
print("a==c")
elif a == d:
print("a==d")
else:
pass
if a<b<c:
print("right")
colors = ['red','blue','black','green']
for color in colors:
if color == 'black':
break #跳出大循环
print('black')
else:
print('not black')
for color in colors:
if color == 'black':
continue #跳出单次循环
print('black')
else:
print('not black')
print("-------------------------")
if 'red' in colors:#判断列表中是否有'red',返回值是True False
print('red')
if 'gray' not in colors:#判断列表colors中是不是没有gray
print("true")
print("-------------------------")
nullList = []
if nullList: #判断列表是否为空,有值返回True,空的话返回False
print(1)
else:
print(0)
if "ann" < "bgg":
print(1)
else:
print(0)

8.字典
#字典dict相当于php里的关联数组
d = {'pen':7,'apple':3,'applepen':10} #Key:Value,键:值
d2 = {1:'a',5:'b',2:'d'}
d3 = {1.2:3,'a':3.5,1:'aaa'}
print(d)
print(d2)
print(d3)
print(d['apple'])
print(d2[2])
print(d3[1.2])
print("-------------------------")
d4 = {'a':[1,2,3,4],'b':(1,2,3,4),'c':{'aa':1,'bb':2}}#字典的值可以是任何数据类型
print(d4)
print(d4['c']['aa'])
d['pen'] = 10 #修改Key对应的Value
print(d)
d['pineapple'] = 3 #新增一个|key:value对,字典是没有顺序的容器
print(d)
del d['pineapple'] #删除一个键值对
print(d)
print("-------------------------")
for key,value in d.items():#遍历整个字典的键值对
print('key:',key,'\t','value:',value)
print("-------------------------")
for key in d.keys(): #遍历整个字典的键
print('key:',key)
print("-------------------------")
for value in d.values(): #遍历整个字典的值
print('values:',value)
print("-------------------------")
for key in sorted(d2.keys()):
print('key:',key)

9.函数
a = 1000
def function5(b=20): #设置默认值
global a #使用全局变量
c = a + b
print('a=',a)
print('b=',b)
print('c=',c)
print('a+b=',c)
function5()

10.模块
'''
注:下面的max是自定义的py文件,文件里就一个函数
def func_max(a,b):
if a>b:
return a
else:
return b
'''
import max #导入了max模块
a = max.func_max(10,34)
print(a)
from max import func_max #从max模块导入func_max函数,此种方法调用函数时不用加max的前缀
a = func_max(11,33)
print(a)
from max import * #导入max模块中所有的内容
import max as m #导入max,用as指定max的别名为m
a = m.func_max(22,44)
print(a)
import os #导入os模块
print(os.getcwd()) #获取当前文件所在的路径

11.类基础
class human: #类
#类的属性
name = 'someone'
age = 100
#类的方法
def my_name(self):
print('my name is',self.name)
def my_age(self):
print('my age is',self.age)
def eat(self):
print('eat')
def think(self,a,b):
print(a+b)
person1 = human() #创建一个person1的对象
person1.eat()
person1.my_age()
person1.name = 'zhangsan'
print(person1.name)
person1.think(10,23)
print("-------------------------")
#重名的类,后面定义的类会覆盖前面的类
class human: #类
def __init__(self,name,age=11):#创建对象时会执行
self.name = name
self.age = age
#类的方法
def my_name(self):
print('my name is',self.name)
def my_age(self):
print('my age is',self.age)
def eat(self):
print('eat')
def think(self,a,b):
print(a+b)
person2 = human('xiaoming',10)
person2.my_age()
person3 = human(name='xiaohong',age=20)
person3.my_age()

12.类的继承
class human: #类
def __init__(self,name='someone',age=10):#创建对象时会执行
self.name = name
self.age = age
print('human init')
#类的方法
def my_name(self):
print('my name is',self.name)
def my_age(self):
print('my age is',self.age)
def eat(self):
print('eat')
def think(self,a,b):
print(a+b)
class student(human):#子类继承父类
def __init__(self,grade=1,school='MIT'):
super().__init__() #父类的初始化
self.grade = grade
self.school = school
self.scroe = 100
print('student init')
#添加子类自己的方法
def learn(self):
print('learning')
def my_school(self):
print('my school is',self.school)
stu2 = student(4)
stu2.my_age()
stu2.learn()
stu2.my_school()
print("-------------------------")
class student(human):#子类继承父类
def __init__(self,grade=1,school='MIT'):
super().__init__() #父类的初始化
self.grade = grade
self.school = school
self.scroe = 100
print('student init')
#添加子类自己的方法
def learn(self):
print('learning')
def my_school(self):
print('my school is',self.school)
#子类可以重写父类的方法
def think(self,a,b):
print(a*b)
stu3 = student()
stu3.think(10,20)

a_input = input()
print(a_input)
b_input = input('Please input something:')
print(b_input)

14.文件读写
text = 'Writing a text\nhello world'
print(text)
my_file = open('file1.txt','w') #以写入的方式打开文件,如果文件不存在会创建该文件
my_file.write(text)
my_file.close()
#使用with .... as的方式打开文件时,
#with后面的语句执行完后会自动关闭文件句柄,不需要再调用close()函数来手动关闭
with open('file2.txt','w') as f2:#清空文件,然后写入
f2.write('123123\nhahaha')
with open('file2.txt','a') as f2: #在文件最后追加内容
f2.write(text)
with open('file2.txt','r') as f2: #以读取的方式打开文件
content = f2.read() #读取全部内容
print(content)
print("-------------------------")
with open('file2.txt','r') as f2:
content = f2.readline() #读取一行内容
print(content)
print("-------------------------")
with open('file2.txt','r') as f2:
content = f2.readlines() #读取所有行存放到一个列表中
print(content)
print("-------------------------")
filename = 'file2.txt'
with open(filename) as f:
for line in f:
print(line.rstrip())

15.异常处理
try:
file = open('hahaha','r+')
except Exception as e:
print(e)
try:
file = open('hahaha','r+')
except Exception as e:
print(e)
response = input('Do you want to create it:')
if(response=='yes'):
with open('hahaha','w') as f:
pass
print('The file was created successfully')
else:
pass
else:#没有错误
file.write('hahaha')
file.close()

16.json数据存储
import json
a_dict = {'user_id':"qbf",'user_name':'hello',100:200}
with open('example.json','w') as f:
json.dump(a_dict,f)
with open('example.json') as f:
content = json.load(f)
print(content)
