目录
一.输入输出
1.输入
def input_data1():
# 输入一个数据
data1 = input('Please Input a datas:')
print(data1)
def input_data2_string():
# 输入多个数据以空格分开
data1,data2,data3=input("Please input two datas split by space").split()
print(data1,data2,data3)
def input_data2_int():
# 输入多个数据,返回值为int
data1, data2 = map(int,input("Please input two datas split by space").split())
print(data1, data2)
def input_list():
lis=list(input().split())# 这里也可以用map
print(lis)
if __name__ == '__main__':
input_list()
想要判断输入类型可以通过type(data)进行判断
2.输出
if __name__ == '__main__':
name = '汉卿HanQ'
age = 24
# b类似C 但不推荐!!!!
print("大家好,我是%s" % name)
print("大家好,我是%s" % (name,))
print("大家好,我是%s,今年%d岁" % (name, age))
print("大家好,我是%(name)s,今年%(age)d岁" % {"name": name, "age": age})
# 使用format进行输出
print("大家好,我是{},今年{}岁".format(name, age))
print("大家好,我是{0},今年{1}岁".format(name, age))
print("大家好,我是{1},今年{0}岁".format(age, name))
print("大家好,我是{your_name},今年{your_age}岁".format(your_name=name, your_age=age))
数据类型代号 | 含义 |
---|---|
%s | 格式化字符串 |
%c | 格式化字符及ASCII码 |
%d | 格式化有符号整数 |
%f | 格式化浮点数,可以指定小数点后的位数,如%.2f |
%i | 格式化有符号整数,老式写法 |
%u | 格式化无符号整数 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%e | 科学计数法格式化浮点数 |
%E | 同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f和%E的简写 |
%p | 用十六进制数格式化变量的地址 |
二.数据类型
1.数字:int,complex,float,bool
def lean_int():
# 学习int中地址
a=6
b=6
print(id(a),'num is:',a,id(b),'num is:',b)# id(obj)为取地址
a=8
print(id(a), 'num is:', a, id(b), 'num is:', b)
"""
输出为:
2335945654672 num is: 6 2335945654672 num is: 6
2335945654736 num is: 8 2335945654672 num is: 6
可以发现a和b取相同值时地址相同,当a值发生变化后地址也发生了相应变化
"""
if __name__ == '__main__':
lean_int()
def learn_float():
a=1.2
print(type(a),a)# type(obj)为输出参数类型
"""
输出为:
<class 'float'> 1.2
"""
if __name__ == '__main__':
learn_float()
def learn_complex():
# 复数分为实部 虚部(x虚数部后面必须J) 共轭复数
a=2+6j# 复数的第一种赋值方式
print(type(a),a)
b=complex(2,6)#复数的第二种赋值方式
print(type(b),b)
#猜测一下,ab的地址还会相同么?
print(id(a),id(b))
"""
输出为:
<class 'complex'> (2+6j)
<class 'complex'> (2+6j)
1945715799472 1945715799984 这里很明显两个复数不相同
"""
print(a.real, b.real)# real获得实部
print(a.imag,b.imag)# imag获得虚部
print(a.conjugate(),b.conjugate())# conjugate()获得共轭复数
"""
输出为
2.0 2.0
6.0 6.0
(2-6j) (2-6j)
"""
if __name__ == '__main__':
learn_complex()
def learn_bool():
# 布尔类型分为True(非零值或非零字符串)和False(None 0 空) 其关系分为与或非(and or not)
flag1=True;
flag2=False;
print("Flag1 is:",flag1,
"Flag2 is:",flag2,
"\nFlag1 and Flag2 is:",flag1 and flag2,
"\nFlag1 or Flag2 is:",flag1 or flag2,
"\nnot Flag1 is:",not flag1)
"""
输出为:
Flag1 is: True Flag2 is: False
Flag1 and Flag2 is: False
Flag1 or Flag2 is: True
not Flag1 is: False
"""
if __name__ == '__main__':
learn_bool()
def learn_cal():
"""
加 +
减 -
乘 *
除 /
整除 //
求余 %
幂 **
最大公约数 gcd(num1,num2)
取整 trunc(num)
e^x exp(x)
x^y pow(x,y)
平方根 sqrt(x)
指数log2(x)
"""
a=2
b=3
print(a+b)
print(a-b)
print(a*b)
print(a/b)
print(a//b)
print(a%b)
print(a**b)
print(math.gcd(a,b))
print(math.exp(a))
print(math.pow(a,b))
print(math.sqrt(a))
if __name__ == '__main__':
learn_cal()
2.字符串:String
def learn_string():
# python中‘’和""都可以定义字符出阿布
str='abcde'
# Python提供了正索引和反索引
# 0 1 2 3 4
# a b c d e
# -5 -4 -3 -2 -1
print(str,str[0],str[-5])# 输出为 abcde a a
# 切片
print(str[1:3])# 输出为bc 即输入胡str[1] str[2]
# 替换
print(str.replace('a','A'))# 输出为 Abcde
if __name__ == '__main__':
learn_string()
3.列表:list
def learn_list():
# 列表分为单列表和多维列表
list1=[1,2,3,4]
list2=[5,6,7,8]
list3=list1+list2
list4=[list1,list2]
print(list1,list2,list3,list4)
# 输出为list1 list2 [1, 2, 3, 4] [5, 6, 7, 8]
# list3=list1+list2 [1, 2, 3, 4, 5, 6, 7, 8]
# list4=[list1,list2] [[1, 2, 3, 4], [5, 6, 7, 8]]
# 列表索引也分为正索引和反索引,类似String
print(list1[0],list1[-4])# 1 1
# 遍历列表list1
for i in range (0,len(list1)):
print(list1[i])# 输出list1内容 1 2 3 4
if __name__ == '__main__':
learn_list()
len(list_obj) | 列表元素个数 |
max(list_obj) | 返回列表元素最大值 |
min(list_obj) | 返回列表元素最小值 |
list(seq) | 将元组转换为列表 |
list.append(obj) | 末尾追加新对象 |
list.count (obj) | 计算某个元素在列表中出现的个数 |
list.index(obj) | 在列表中找出某个值第一个匹配项的索引位置 |
list.pop(obj) | 将对象插入列表 |
list.insert(index,obj) | 一处列表中最后一个元素,并返回该元素的值 |
list.remove(obj) | 一处列表中某个值匹配的第一个匹配项 |
list.sort(obj) | 对列表进行排序 |
list.reverse(obj) | 对列表进行反转 |
list.clear(obj) | 清空列表 |
4.元组:Tuple
def learn_tuple():
# 创建元组与创建列表类似,使用()但若元组中只有一个元素,也要加上括号 否则括号会被当作运算符
tuple1 =('a','b')
tuple2=('a',)
tuple2_no=('a')
print(tuple1,tuple2,tuple2_no)
"""
输出为:
('a', 'b') ('a',) a
"""
# 其余用法与列表类似
if __name__ == '__main__':
learn_tuple()
元组的优点
- 可以使函数返回多个值
- 可以使程序运行性能提升
- 一般来说,创建元组类型tuple的变量比列表类型list要快,而且占用更小的存储空间。
- 使用元组是线程安全的
- 元组类型变量的元素不可更改性,可保证多线程读写时的安全问题。
5.字典:Dictionary
def learn_dict():
# 字典为键值对形式存在 创建字典
dict1= {'userName':'17044908','pwd':'123456','phone':'12345678911'}
print(dict1)
# 输出 {'userName': '17044908', 'pwd': '123456', 'phone': '12345678911'}
# 遍历字典
for key,val in dict1.items():
print(key,val)
"""
输出为:
userName 17044908
pwd 123456
phone 12345678911
"""
if __name__ == '__main__':
learn_dict()
6.集合:Set
def learn_set():
#创建集合 集合中值必须唯一
set1={1,2,3,4,4}
set2={1,4,6,6,7}
print(set1)# 输出为{1, 2, 3, 4}
print(set1|set2)# 并 {1, 2, 3, 4, 6, 7}
print(set1&set2)# 交 {1, 4}
print(set1-set2)# 差 {2, 3}
print(set1^set2)# 对称差 {2, 3, 6, 7}
if __name__ == '__main__':
learn_set()
三.三大结构-顺序结构
def learn_sequence():
#从上到下以此执行 例如计算正方形面积
len=3
high=5
s=len*high
print("The square area is ",s)
# 输出The square area is 15
if __name__ == '__main__':
learn_sequence()
四.三大结构-选择结构
def learn_if():
#学习if选择结构 例如判断今天是否为工作日
day=int(input("请输入1-7之间一个数"))#input输入为str 需要通过int()转为int
if(day>=1 and day<=7):
if(day>=1 and day<=5):
print('This is work day')
else:
print('This is a work overtime day!!')
else:
print('Data Error')
if __name__ == '__main__':
learn_if()
五.三大结构-循环结构
1.while循环
def learn_while():
#好了,现在我们觉得learn_if每次都要点一次,我们怎么改进呢?
flag=True
while(flag):
day=int(input("请输入1-7之间一个数,输入0结束:"))
if(day==0):# 如果输入为0通过将flag=False和break跳出循环
flag=False
print("Exit")
break
if (day >= 1 and day <= 7):
if (day >= 1 and day <= 5):
print('This is work day')
else:
print('This is a work overtime day!!')
else:
print('Data Error')
if __name__ == '__main__':
learn_while()
2.for循环
def learn_for():
#输入0-9
for i in range(1,10):
print(i)
#输出输出的str串的字符
str=input("Please input a string:")
for i in str:
print(i)
if __name__ == '__main__':
learn_for()
六.函数
相信学习完1-5,已经基本学会了函数的调用,但还不够完整,因为函数需要有参数和返回值,下面举个有参数和返回值的例子
def choose_max(num1,num2):
"""
比较num1和num2两个最大的值
:param num1:
:param num2:
:return:
"""
if(num1>num2):
return num1;
else:
return num2
if __name__ == '__main__':
maxNum = choose_max(1,2)
print(maxNum)# 输出为:2
七.类
1.定义类
class Person:
name=None
age=None
def __init__(self):
pass
def setName(self ,name):
self.name=name
def setAge(self,age):
self.age=age
def say(self):
print("My name is ",self.name,"My age is ",self.age)
if __name__ == '__main__':
my=Person()
my.setName('HanQ')
my.setName('24')
my.say()
2.继承+多态:
class Boy(Person):
def run(self):
print('run')
def say(self):
print('I am a boy called {},{} ages'.format(self.name,self.age))
if __name__ == '__main__':
boy=Boy()
boy.setName('HanQ')
boy.setAge(24)
boy.say()
boy.run()
3.抽象
class animals(metaclass=abc.ABCMeta):
all_type='an'
@abc.abstractmethod# 定义抽象方法 无需实现功能
def callName(self):
pass
class Person(animals):