下决心要做的事,就要一往无前
大家好,我是小沐!编程路上一个人可能走的更快,但一群人才能走得更远,关注小沐一起学习不迷路!今天分享的是 python的基础知识,主要是一些简单的结构和语法,吐血整理了近一万字。话不多说,秃头走起——>冲冲冲!!!
人工智能、机器学习、深度学习 、数据分析、爬虫等等等等。
1989年由荷兰人吉多·范罗苏姆创造;
解释型语言,开发过程无编译环节;
交互式语言,可在>>>后直接执行代码
面向对象的语言。
“胶水语言”可将C++或JAVA所写的模块整合在一起。
开发环境大家可以根据自己的需求解决,我们需要首先在官网下载python,其次安装编辑器,Pycharm是当前最主流的python编辑器,但过于笨重,小沐目前用不到那么多功能,就在VScode上编辑就ok了,还有其他的一些编辑器,大家可以根据需求安装。
print(520)
print('Hello,World')
print("Hello,world")
print(3+1)
fp=open('D:/.text.txt','a+')#a+表示追加,每运行一次,文档中就多出一行hello,world
print('helloworld',file=fp)
fp.close()
#所指定的盘要存在
#使用file=
print('hello','world',
'python')
fp=open('D:/.text.txt','a+')#a+表示追加,每运行一次,文档中就多出一行hello,world
print('helloworld',file=fp)
fp.close()
上述代码结果是在指定目录下的文件里打印了helloworld。
#转义字符
print('hello\nworld') #换行
print('hello\tworld') #制表符,四个位置为一个整体(含空格)
print('hellooo\tworld')#四格一个制表位
print('hello\rworld')# 回车 world覆盖了hello
print('hello\bworld')#回退一格
print('hello\\\world')# 两个斜杠代表单斜杠
print('老师说:\'大家好\'') #单个斜杠不起作用
#原字符:前面加r或R使转义字符失效
print(r'hello\nworld\\')
#最后一个字符不能为一个\,可以为两个,为1个会报错,如下:
print(r'hello\nworld\')
8位(bit)一个字节(byte) 1024字节=1KB(千字节) MB GB TB(太字节)
八位——>ASCII表,0-127共128种状态符号包含大小写字母,数字0-9,其他128种供其他国家使用,但128个不够用
发展了各种编码,最终Unicode几乎包含了全世界的字符,规定中英文都用两个字节表示
UTF-8 中文汉字3个字节,英文字母1个字节
print(chr(0b100111001011000)) #乘
print(ord('乘')) #ord函数获取字符对应的十进制数
保留字是系统中已经使用名字;
标识符是你起的名字;
我们的标识符不能和保留字取一样的名字。
#保留字打印,可打印出当前版本所有的保留字
import keyword
print(keyword.kwlist)
变量由三部分组成
标识:表示对象所存储的内存地址,用内置函数id(obj)来获取
类型:type(obj)获取
值:print(obj)获取
name='苏沐'
print(name)
print('标识',id(name))
print('类型',type(name))
print('值',name)
name='楚风'
print(name)
print('标识',id(name))#内存空间发生改变
有四种基本数据类型: int float bool str
#整数int
n1=11
n2=0
n3=-11
print(n1,type(n1))
print(n2,type(n2))
print(n3,type(n3))
#整数可以表示为二进制、十进制、八进制、十六进制,默认为十进制
#二进制前加0b,八进制前加0o,十六进制前加0x/0X
print('十进制',11)
print('二进制',0b1011)
print('八进制',0o13)
print('十六进制',0xB)
#浮点型flost
a=3.14159
print(a,type(a))
n1=1.1
n2=2.2
print(n1+n2)
print(1.1+2.1)
#浮点数存储数据不精确,计算时有时候可能出现小数位数不确定的情况,可用decimal解决
from decimal import Decimal
print(Decimal('1.1')+Decimal('2.2'))
#布尔类型bool(boolean)
#True为真=1,False为假=0
#布尔值可以转换为整数计算
f1=True
f2=False
print(f1+1,type(f1))
print(f2+1,type(f2))
#字符串类型str
#又称为不可变的字符序列
#可使用单引号‘’ 双引号“ ” 三引号 ''' ''' 或 """ """ 来定义
#单引号和双引号定义必须在同一行,三引号可不在同一行
str1='人生苦短,我用python'
str2="人生苦短,我用python"
str3='''人生苦短,
我用python'''
str4="""人生苦短,
我用python"""
print(str1,type(str1))
print(str2,type(str2))
print(str3,type(str3))
print(str4,type(str4))
数据类型转换:将不同类型的数据拼接在一起
name='张三'
age=20
print(type(name),type(age))
print('我叫'+name+'今年,'+str(age)+'岁') # +为连接符,加类型转换即可成功输出
# str() 或 ' ' 将其他数据类型转换成字符串
a=10
b=3.14
c=False
print(type(a),type(b),type(c))
print(str(a),str(b),str(c),type(str(a)),type(str(b)),type(str(c)))
# int() 转整,文字类和小数类字符串,无法转换成整数 ;浮点数转换成整数,抹零取整
s1='11'
f1=11.1
s2='11.11'
f2=True
s3='hello'
print(type(s1),type(f1),type(s2),type(f2),type(s3))
print((int(s1)),type(int(s1)))#字符串为整数数字串,可转
print(int(f1),type(int(f1))) #截整数部分
# print(int(s2),type(int(s2))) 报错,说明小数串不可转
print(int(f2),type(int(f2))) #布尔可转
# print(int(s3,type(int(s3)))) 报错,说明str转int只有整数数字串可转,文字类和小数串都不行
# float() 将其他数据类型转换成浮点数。文字类无法转换成浮点数;整数转浮点数末尾为.0
f1='3.14'
f2='11'
f3=10
f4=66.66
f5=True
f6='hello'
print(type(f1),type(f2),type(f3),type(f4),type(f5),type(f6))
print(float(f1),type(float(f1)))
print(float(f2),type(float(f2)))
print(float(f3),type(float(f3)))
print(float(f4),type(float(f4)))
print(float(f5),type(float(f5)))
# print(float(f6),type(float(f6))) 报错,说明字符串中如果是非数字串则不可转
三种注释
第一种:单行注释 #
第二种,多行注释’‘’ ‘’’
第三种,中文编码声明注释——在文件开头加上中文声明注释 #coding:gbk ,用以指定源码文件的编码格式
作用:接受来自用户的输入
返回值类型:输入值的类型为str 格外注意
值的存储:使用即为对输入的值进行存储
temp=input('为啥要学python?')
print(temp,type(temp))
a=input('请输入一个整数:')
b=input('请输入另一个整数:')
print(type(a),type(b))
print(a+b) #输出为两个数字的连接
print(int(a)+int(b)) #输出结果为两个数相加
#或者
c=int(input('请输入一个数:'))
d=int(input('请输入另一个数:'))
print(c+d) #输出结果正确,为两数相加
##标准算数运算符 +-*/ //(整除)
print(1+1)
print(1-1)
print(2*2)
print(5/2)
print(5//2)
###注意:一正一负整除时,向下取整
print(-9/-4)
print(-9/4)
print(-9//-4)
print(-9//4) #-3
print(9//-4) #-3
##取余运算符 %
print(5%2)
###注意:一正一负取余有公式:余数=被除数-除数*商
print(9%-4) #-3
print(-9%4) # 3
##幂运算符 **
print(2**4)
#二赋值运算符=
#执行顺序:从右到左
from re import I
m=7+11
print(m)
#支持链式赋值
a=b=c=11 #a,b,c指向同一块区域?
print(a,id(a))
print(b,id(b))
print(c,id(c))
print(a,b,c)
#支持参数赋值
## += -= *= /= %= //=
#支持系列解包赋值
i,j,k=10,20,30 #左右变量的个数和值的个数要对应
print(i,j,k)
#交换两个数的值
i,j=j,i #easy!!!
print(i,j)
#布尔运算符 and or not(对布尔类型操作数取反) in(在字符串里面没有) not in
a=10
b=20
print(a==10 and b==20) #结果为True
print(a==10 or b==11) #结果为True
c=True
print(not c) #结果为False
ss='python'
print('h' in ss) #结果为True
print('a' in ss) #结果为False
#三比较运算符 比较运算符的结果为bool类型,即True或False
# > < >= <= != == is is not
a,b=7,11
print('a>b吗?',a>b)
print('a,a<b)
#注意:比较对象的值是否相等用==,比较两个对象的标识id(内存地址)是否相等用 is
a=11
b=11
print(a==b) #结果为True
print(a is b) #结果为True
lst1=[11,22,33,44]
lst2=[11,22,33,44]
print(lst1==lst2) #结果为True
print(lst1 is lst2) #结果为False
print(id(lst1))
print(id(lst2))
#is not 比较两个对象的id不相等为True
print(lst1 is not lst2) #结果为True
#位运算符:位与& 位或| 左移运算符<< 右移运算符>>
#将数据转成二进制进行计算
print(4&8) #按位与 同为1时结果为1
print(4|8) #按位或 同为0时结果为0
print(4<<1) #左移一位高位溢出,低位补0, 十进制结果相当于原数*2
print(4<<2)
print(4>>1) #右移一位低位截断,高位补0, 十进制结果相当于原数/2
print(4>>2)
()>算数运算符>位运算符>比较运算符>布尔运算符>赋值运算符
任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构三种基本结构组合而成。
程序从上到下按顺序执行,可单步调试查看。
Python一切皆对象,所有对象都有一个布尔值(变量也是对象)
可用内置函数bool() 获取对象的布尔值。
以下对象的布尔值皆为False:
False、数值0、None、空字符串、空列表、空元组、空字典、空集合
print(bool(False))
print(bool(0))
print(bool(0.0))
print(bool(None))
print(bool(''))
print(bool(""))
print(bool([])) #空列表
print(bool(list())) #空列表
print(bool(())) #空元组
print(bool(tuple())) #空元组
print(bool({})) #空字典
print(bool(dict(dict()))) #空字典
print(bool(set())) #空集合
除上述对象外其他对象的布尔值均为True(注意:字符串若为空格串为True
if 条件表达式 :
条件执行体
num=60
s=int(input('请输入分数:'))
if num<=s:
s-=num
print('及格!分数超出及格线',num)
if 条件表达式:
条件执行体1
else:
条件执行体2
num=60
s=int(input('请输入分数:'))
if num<=s:
s-=num
print('及格!分数超出及格线',s)
else:
s=num-s
print('不及格!离及格还差',s)
if 条件表达式1 :
条件执行体1
elif 条件表达式2 :
条件执行体2
elif 条件表达式N :
条件执行体N
else:
条件执行体N+1
上述结构中的 else: 可写可不写
num=int(input('请输入你的成绩:'))
if num>=90 and num<=100: #可写为90<=num<=100
print('优秀')
elif num<90 and num>=60:
print('良好')
elif num<60 and num>=0:
print('不及格')
else:
print('数据有误,上天了!')
注意:在python中,可以用连续的大于小于号确定范围,如10>a>=9,而在其它语言中一般不行
if 条件表达式1:
if 内层条件表达式:
内层条件执行体1
else:
内层条件执行体2
else:
条件执行体
count=input('您是会员吗?yes/no')
num=float(input('请输入您的消费金额:'))
if count=='yes':
if num>=1000:
print('打八折,共花费金额为:',num*0.8)
elif 500<=num<1000:
print('打九折,共花费金额为:',num*0.9)
else:
print('不打折,共花费金额为:',num)
else:
print('不打折,共花费金额为:',num)
条件表达式为if…else…的缩写。
如果判断条件为真,返回x,为假返回y
x if 判断条件 else y
#比较两个整数的大小
a=int(input('请输入第一个整数:'))
b=int(input('请输入第二个整数:'))
print((str(a)+'大于'+str(b)) if a>b else (str(a)+'小于'+str(b)))
pass语句什么都不做,只是一个占位符;
在搭建语法结构,还没想好怎么写代码的时候使用:
如:if条件句,for-in循环体,函数体内
um=int(input('请输入你的成绩:'))
if num>=90 and num<=100:
pass
elif num<90 and num>=60:
pass
elif num<60 and num>=0:
print('不及格')
作用:用于生成一个整数序列。
语法:
range(end)——创建一个[0,end) 之间的整数序列,步长为1;
range(start,end)——创建一个[start,end) 之间的整数序列,步长为1;
range(start,end,n)——创建一个[start,end) 之间的整数序列,步长为n。
ran=range(1,10,2)
print(ran) #直接无法打印输出
print(list(ran)) #输出ran中的整数序列
#可用in not in判断指定整数是否在序列中
print(10 in ran)
注意:==不管range对象表示的整数序列有多长,所有range对象占用的内存空间都是相同的,仅仅需要存储start,end和n,只有当用到range对象时,才会去计算序列中的相关元素
用于次数不固定的循环。
语法:
while 条件表达式:
条件执行体(循环部分)
#求1到100之间的偶数之和
num=1
sum=0
while num<=100:
if num%2:
sum+=num
num+=1
print(sum)
注意:python中没有自增自减运算符,可以编译通过但不起作用。
语法:
for 自定义变量 in 可迭代对象:
循环体
for-in遍历的对象必须为可迭代对象;
for a in 'hello':
print(a)
for b in range(9):
print(b)
#求100到999之间的水仙花数:个位三次方+十位三次方+百位三次方=原数
for num in range(100,1000):
a=num%10
b=num//10%10
c=num//100
if(a**3+b**3+c**3==num):
print(num)
循环体内不需要访问自定义变量,可以将自定义变量替代为下划线_。
for _ in range(5):
print('我爱python!')
用于结束循环,通常与if一起使用
a=0
while a<5:
str1=input('请输入密码:')
if str1=='6666':
print('密码正确!')
break
else:
print('密码不正确')
a+=1
不执行接下来的语句,结束当前循环,进入下一次循环,通常与if一起使用。
#输出50以内5的倍数
for num in range(1,50):
if num%5!=0:
continue
print(num)
else的三种搭配语法:
① if…:
…
else:
…
②while…:
…
else:
…
③for…:
…
else:
…
#三次机会猜密码
for num in range(3):
str=input('请输入密码:')
if str=='6666':
print('密码正确!')
break
else:
print('密码不正确!')
else:
print('抱歉,机会已用尽!')
num=0
while num<3:
str2=input('请输入密码:')
if str2=='6666':
print('密码正确!')
break
else:
print('密码不正确!')
num+=1
else:
print('抱歉,机会已用尽!')
#输出三行四列的矩阵*
for i in range(1,4):
for j in range(1,5):
print('*',end='\t') #不换行输出
print() #换行
#输出九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print(j,'*',i,'=',i*j,end='\t')
print() #换行
二重循环中的break和continue用于控制本层循环而对外层循环没有影响。
今日分享到此结束,由于笔者还在求学之路上辗转徘徊,水平有限,文章中可能有不对之处,还请各位大佬指正,祝愿每一个热爱编程的人都能实现追求,考研上岸进大厂,熬夜秃头卷中王。最后欢迎关注小沐,学习路上不迷路!