一、计算机简介
1.软件开发简介
软件:一系列按照特定顺序组织起来的计算机语言或者指令
开发:制作软件的过程
软件的分类:
系统软件:Windows,Linux,mac os等
应用软件:qq,微信等
2.Python概述
Python的特点:
a.面向对象的【一切皆对象】
b.解释性语言
c.交互式语言【在终端进行命令的编程】
d.跨平台的语言【没有操作系统的限制,任何的操作系统都可以运行python代码】
Python的优缺点:
优点:
a.易于学习和维护【版本更新迭代】
b.广泛的标准库【提供了大量的工具】
c.可扩展性
d.数据库【mysql,sqlites3,mongodb,redis等数据库,Python中都有对应的模块】
e.GUI编程【图形化界面】
缺点:
a.运行速度慢【和c语言比较】
b.代码不能加密
3.数据的存储
计算机的作用:存储数据,运算数据
数据存储在内存中,是以二进制的形式存储的【0和1,开关原理】
进制的转换:计算机底层的工作原理
原码反码补码:数据在计算机中都是以补码的形式存储的
二、基础语法
1.关键字和标识符
关键字:在Python中被赋予了特殊含义的英文单词【break,continue,import,from ,class等】
标识符:
规则:
a.只能由数字,字母,和下划线
b.不能以数字开头
c.不能使用其他的特殊符号
d.严格区分大小写
规范:
a.不要使用关键字【注意:不要使用系统的函数名命名:abs = 10】
b.格式:
Python官方:所有的单词全部小写,不同的单词之间使用下划线分隔,举例:student_num
普遍:驼峰命名法
小驼峰:不同单词之间要分隔:单词首字母大写,但是。第一个单词的首字母小写,举例:studentNum
大驼峰:不同单词之间要分隔:单词首字母大写,举例:StudentNum【TypeError,ValueError】,一般只使用在类名的定义中
常量命名法:NUMBER = 10 ,只是一种约定,本质还是一个变量
2.常量和变量
可以随时进行重新赋值的标识符【可以修改值,也可以修改类型】
Python是一门弱类型的语言【强类型:Java】
举例:
num = 10
num = 20
num = "hello"
Java: int num = 10 num = 20
js: var num = 10
Python的数据类型:
数字型:整型和浮点型,复数
字符串:“xxxx” “”“xxxxx”“”
布尔型:True和False
空值:None
数据结构:list,tuple,dict,set
a.定义方式:list:[] tuple:() dict:{} set:{}
b.是否有序:list:有序 tuple:有序 dict:无序 set:无序
c.是否允许出现重复元素:list:允许 tuple:允许 dict:key不允许 set:不允许
d.属于可迭代对象
e.set相当于存储了字典中的key
f.可以相互转换
list(xx) tuple(xx) set(xx)
函数:函数名其实就是一个变量名
类:
内存中的变量:
num = 10 s1 = “hello”
内存:运算区域
变量的本质:在内存中开辟了一块空间,其中存储了指定类型的数据
堆:实体存储在堆空间中
栈:变量【引用】存储在栈空间中
删除变量:就相当于该变量未被定义
num = 10
del num
print(num) #NameError
变量类型之间的转换:
int() str() float()
3.input和print
input:输入
print:输出
importsys
s1="453645"
print(int(s1))
#input获取到的内容全部是字符串
# s2 = int(input("请输入数字:"))
# print(s2 + 10)
#数据转换为int的过程中,如果想要转换成功,则指定的数据必须是全数字,如果有其他特殊符号,
# 只能出现+和-,而且只能出现在字符串的第0个字符
# s3 = "abc123"
# s3 = "12+3"
s3="-123"
print(int(s3))
print(str(123))
print(type(str(123)))
print(float(12))
print("+++++++==+++++++++++")
print("hello")
print("hello",3456,17)
#格式化:占位符
"""
%s:字符串,所有的对象
%d:整型
%f:浮点型
"""
num1=10
str1="abc"
print(num1,str1)
print("num1=",num1,'str1=',str1)
print("num1=%d,str1=%s"%(num1,str1))
#需求:将下面三个单词使用%连接起来
print("hello",'good','abchuag')
#默认情况下,sep关键字的值为一个空格的字符串 " "
print("hello",'good','abchuag',sep="%")
#默认情况下,end关键字的值为一个\n【换行符,转义字符】,
print("hello",end="")
print("fhghb")
#重定向:改变原来的操作方式
#默认情况下,关键字file默认的值为sys.stdout
print("hello",file=sys.stdout)
#相对路径
f=open("file1.txt","w")#w;write r:read
print("shjgh~~~~~~~~",file=f)
4.运算符
算术运算符:**【求幂】 //【求整】
#算术运算符:优先级:** > * / // %> + -
print(2*5)
print(2**3)
print(2**5*3)#96
print(2*5**3)#250
print((2*5)**3)
赋值运算符:
简单赋值运算符: =
复合赋值运算符:+= -= *= /= 等 【算术运算符和简单赋值运算符的组合】
num=10
#num += 20
#等价于:num = num + 20
关系【比较,条件】运算符:== != >=等
注意1:运算的结果肯定为布尔值,一般结合if语句或者while循环
注意2:区别==和=
#关系运算符
num=10
ifnum%2==0:#1 == 0 0== 0
print("偶数")
逻辑运算符:
and :两个条件同时成立返回True
or:至少一个条件成立,则返回True
not :否定
注意:运算的结果肯定为布尔值
假:0, 0.0 False,None,""
注意:短路原则
#and ;逻辑与
#一假为假,全真为真
print(TrueandTrue)#True
print(TrueandFalse)#False
print(FalseandTrue)#False
print(FalseandFalse)#False
print(TrueandFalseandTrue)#False
print(FalseandTrueandTrueandTrueandFalse)#短路原则
print("ghjsrghjrh")
#or:逻辑或
#一真为真,全假为假
print(TrueorTrue)#True
print(TrueorFalse)#True
print(FalseorTrue)#True
print(FalseorFalse)#False
print(TrueorFalseorTrue)#True 短路原则
print(FalseorTrueorTrue)#True
成员运算符:in not in
注意:一般集合数据结构使用【for循环遍历中,if判断】
身份运算符:is is not
注意:注意==的区别
print("身份运算符")
a=10
b=10
ifa==b:
print("ok")
else:
print("nook")
ifaisb:
print("ok")
else:
print("nook")
ifid(a) ==id(b):
print("ok")
else:
print("nook")
#总结:is和==的区别:is判断的是地址,==判断的是内容
位运算符:了解
& | ^ << >> ~
#位运算符:^
#需求:交换两个变量的值
num1=10
num2=20
#方式一:交叉赋值
# num1,num2 = num2,num1
# print(num1,num2)
#方式二:定义一个第三方变量
# temp = num1
# num1 = num2
# num2 = temp
# print(num1,num2)
#方式三:异或
#规律:一个数异或另外一个数两次,得到的结果为该数本身
num1=num1^num2# num1 = 10 ^ 20
num2=num1^num2#num2 = 10 ^ 20 ^ 20 = 10
num1=num1^num2#num3 = 10 ^ 20 ^ 10 = 20
#方式四:加减法
num1=num1+num2#num1 = 10 + 20
num2=num1-num2#num2 = 10 + 20 - 20 = 10
num1=num1-num2#num1 = 10 + 20 - 10 = 20
#总结:在实际项目开发中,常用方式一和方式二,面试题中,使用方式一,方式三和方式四
5.语句
代码块
5.1if语句
简单if语句【单分支】:要么执行,要么不执行,取决于条件是否为真
语法:
if 条件表达式:
代码块
说明:条件表达式可以由常量,变量,关系运算符,逻辑运算符,身份运算符,成员运算符充当
if-else语句【双分支】:不管条件是否为真,都实现二选一的操作
语法:
if 条件表达式:
代码块1
else:
代码块2
if-elif-else【多分支】:不管有多少个分支,都实现多选一的操作
语法:
if 条件表达式1:
代码块1
elif 条件表达式2:
代码块2
。。。。
else:
代码块n
嵌套if语句:单分支,双分支和多分支任意两者之间都可以进行相互嵌套
注意:在某些情境下,嵌套if语句可以和and逻辑与之间进行相互转换
#1.单分支
num1=10
num2=20
ifnum1==num2:
num1=100
print(num1)
#练习:判断一个数是否是偶数
# num3 = int(input("请输入一个数字:"))
# if num3 % 2 == 0:
# print("偶数")
# print("奇数")
#2.双分支
# num3 = int(input("请输入一个数字:"))
# if num3 % 2 == 0:
# print("偶数")
# else:
# print("奇数")
#练习:从控制台输入两个数,输出较大的数
# n1 = int(input(""))
# n2 = int(input(""))
# if n1 > n2:
# print(n1)
# else:
# print(n2)
#3.多分支
# if n1 > n2:
# print(n1)
# elif n1 < n2: #elif----->else if
# print(n2)
# else:
# print("相等",n1)
#练习:多分支实现的多选一,不管有多少个条件成立
#工作原理:从上往下依次检索,只要找到一个条件成立,则执行相应的代码块,整个if语句结束
n=3
ifn>1:
print("a")
elifn>2:
print("b")
elifn>=3:
print("c")
else:
print("d")
print("over")
#if单分支,双分支和多分之间的区别
ifn>1:
print("a")
ifn>3:
print("c")
else:
print("d")
ifn>2:
print("b")
elifn>=3:
print("c")
else:
print("d")
#4.嵌套if语句
m1=46
m2=8
ifm1>10:
print("m1~~~~~")
#代码块
ifm2>5:
print("m2~~~~~")
else:
print("elese")
ifm1>10andm2>5:
print("m2~~~~~111")
print("fjaghra")
#注意:理论来说,嵌套的层数没有限制,但是,从代码可读性和可维护性来说,建议尽量不要超过三层
5.2while语句
语法:
while 条件表达式:
代码块
说明:while语句和if语句 的区别:在条件表达式成立的情况下,if语句只执行一次,但是while语句至少会执行一次
完整的while语句:四要素
初始化表达式
while 条件表达式:
循环体
循环之后的操作表达式
#需求1:打印10遍hello world
#1.初始化表达式【定义一个变量,用于控制循环的次数】
n=0
#2.条件表达式
whilen<10:
#3.循环体
print("hello world")
#4.循环之后的操作表达式
n+=1
#练习1:打印0~9的数字
n1=0
whilen1<=9:
print(n1)
n1+=1
#练习2:求1~100之间所有整数的和
n2=1
sum2=0
whilen2<=100:
#print(n2)
sum2+=n2#累加
n2+=1
print(sum2)
#练习3:求1~100之间所有偶数的和
#方式一:
# n3 = 0
# sum3 = 0
# while n3 <= 100:
# sum3 += n3
# n3 += 2
#方式二:
n3=1
sum3=0
whilen3<=100:
ifn3%2==0:
sum3+=n3
n3+=2
#练习4:在1~100之间求既能被3整除也能被7整除的数的个数
n4=1
count4=0
whilen4<=100:
ifn4%3==0andn4%7==0:
count4+=1
n4+=1
#死循环
"""
while True:
pass
while 1:
pass
"""
#else分支:执行时机
#如果条件成立则先执行循环,再接着执行else分支,如果条件不成立,则直接执行else
a=1
whilea>3:
print("hello")
a+=1
else:
print("else")
#嵌套while循环
# b1 = 0
# while b1 < 3:
# b2 = 0
# while b2 < 5:
# print("b1=%d,b2=%d" % (b1,b2))
# b2 += 1
# b1 += 1
"""
b1=0,b2=0
b1=0,b2=1
b1=0,b2=2
b1=0,b2=3
b1=0,b2=4
b1=1,b2=0
b1=1,b2=1
b1=1,b2=2
b1=1,b2=3
b1=1,b2=4
b1=2,b2=0
b1=2,b2=1
b1=2,b2=2
b1=2,b2=3
b1=2,b2=4
"""
print("+++++++++++++++")
b1=0
b2=0
whileb1<3:
whileb2<5:
print("b1=%d,b2=%d"%(b1,b2))
b2+=1
b1+=1
"""
b1=0,b2=0
b1=0,b2=1
b1=0,b2=2
b1=0,b2=3
b1=0,b2=4
"""
#九九乘法表
"""
行 列
1x1=1 1 1
1x2=2 2x2=4 2 2
1x3=3 2x3=6 3x3=9 3 3
....
1x9=9 2x9=18 .......8x9=72 9x9=81 9 9
规律:
1.行数的取值范围:1~9
2.列数随着行数的变化而变化,列数的最大值和行数相等
"""
line=1
#外层循环:控制行
whileline<=9:
colum=1
#内层循环:控制列
whilecolum<=line:
print("%dx%d=%d"%(colum,line,line*colum),end=" ")
colum+=1
print("")
line+=1
#练习:求10的阶乘【1x2x3....x10】
n1=1
sum1=1
whilen1<=10:
sum1*=n1
n1+=1
5.3for语句
主要用于遍历数据结构
语法:
for 变量 in 数据结构:
循环体
说明:使用for-in可以依次获取某个数据结构中的元素,自动将获取出来的元素赋值给变量
list1= ["hfahf","hello",235,True,18.9]
#for:元素
forelementinlist1:
print(element)
#while:索引
n=0
whilen print(list1[n]) n+=1 #for:索引 #思路:range(),可以生成一个可迭代对象,可以生成一个和索引相关的列表 """ range([start,]end[,step]) start:开始数值,默认的值为0 end:结束数值 step:步长,默认的值为1 包头不包尾 """ print(list(range(10))) print(list(range(1,10))) print(list(range(1,10,2))) forninrange(len(list1)): print(list1[n]) #练习:求1~100之间所有偶数的和 sum1=0 forn1inrange(1,101): ifn1%2==0: sum1+=n1 print(sum1) sum2=0 forn2inrange(0,-101,-2): sum2+=n2 print(sum2) #start,end,step:保持同步 """ 1.如果要指明step,则start,end,step缺一不可 2.如果step为负数,在start和end之间有负数存在 """ #else分支:for循环执行完毕之后才执行else分支 forelementinlist1: print(element) else: print("else") #嵌套for foriinrange(1,10): forjinrange(1,i+1): print("%dx%d=%d"%(j,i,i*j),end=" ") print("") 5.4break和continue break:直接跳出当前循环 continue:结束当前正在执行的循环,继续下一次循环 说明:break和continue可以应用在while和for,break使用更广泛 n1=0 whilen1<10: print(n1) #在Python中,break只能使用在循环中,跟if语句没有任何关系,if语句的存在只是一个条件的限制 ifn1==5: #break n1+=1 continue n1+=1 print("over") #嵌套循环中 foriinrange(5):#0~4 forjinrange(3):#0~2 print("i=%d,j=%d"%(i,j)) ifj==1: #跳出的内层循环【就近原则:当前】 break #在嵌套循环中,break和continue需要跳出哪个循环,则需要在当前循环天添加break和continue语句 #一般单独为一条语句