一、计算机简介
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:输出
import sys 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 if num % 2 == 0: #1 == 0 0== 0 print("偶数")
逻辑运算符:
and :两个条件同时成立返回True
or:至少一个条件成立,则返回True
not :否定
注意:运算的结果肯定为布尔值
假:0, 0.0 False,None,""
注意:短路原则
#and ;逻辑与 #一假为假,全真为真 print(True and True) #True print(True and False) #False print(False and True) #False print(False and False) #False print(True and False and True) #False print(False and True and True and True and False) #短路原则 print("ghjsrghjrh") #or:逻辑或 #一真为真,全假为假 print(True or True) #True print(True or False) #True print(False or True) #True print(False or False) #False print(True or False or True) #True 短路原则 print(False or True or True) #True
成员运算符:in not in
注意:一般集合数据结构使用【for循环遍历中,if判断】
身份运算符:is is not
注意:注意==的区别
print("身份运算符") a = 10 b = 10 if a == b: print("ok") else: print("nook") if a is b: print("ok") else: print("nook") if id(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 if num1 == 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 if n > 1: print("a") elif n > 2: print("b") elif n >= 3: print("c") else: print("d") print("over") #if单分支,双分支和多分之间的区别 if n > 1: print("a") if n > 3: print("c") else: print("d") if n > 2: print("b") elif n >= 3: print("c") else: print("d") #4.嵌套if语句 m1 = 46 m2 = 8 if m1 > 10: print("m1~~~~~") #代码块 if m2 > 5: print("m2~~~~~") else: print("elese") if m1 > 10 and m2 > 5: print("m2~~~~~111") print("fjaghra") #注意:理论来说,嵌套的层数没有限制,但是,从代码可读性和可维护性来说,建议尽量不要超过三层
5.2while语句
语法:
while 条件表达式:
代码块
说明:while语句和if语句 的区别:在条件表达式成立的情况下,if语句只执行一次,但是while语句至少会执行一次
完整的while语句:四要素
初始化表达式
while 条件表达式:
循环体
循环之后的操作表达式
#需求1:打印10遍hello world #1.初始化表达式【定义一个变量,用于控制循环的次数】 n = 0 #2.条件表达式 while n < 10: #3.循环体 print("hello world") #4.循环之后的操作表达式 n += 1 #练习1:打印0~9的数字 n1 = 0 while n1 <= 9: print(n1) n1 += 1 #练习2:求1~100之间所有整数的和 n2 = 1 sum2 = 0 while n2 <= 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 while n3 <= 100: if n3 % 2 == 0: sum3 += n3 n3 += 2 #练习4:在1~100之间求既能被3整除也能被7整除的数的个数 n4 = 1 count4 = 0 while n4 <= 100: if n4 % 3 == 0 and n4 % 7 == 0: count4 += 1 n4 += 1 #死循环 """ while True: pass while 1: pass """ #else分支:执行时机 #如果条件成立则先执行循环,再接着执行else分支,如果条件不成立,则直接执行else a = 1 while a > 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 while b1 < 3: 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 """ #九九乘法表 """ 行 列 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 #外层循环:控制行 while line <= 9: colum = 1 #内层循环:控制列 while colum <= line: print("%dx%d=%d" % (colum,line,line * colum),end=" ") colum += 1 print("") line += 1 #练习:求10的阶乘【1x2x3....x10】 n1 = 1 sum1 = 1 while n1 <= 10: sum1 *= n1 n1 += 1
5.3for语句
主要用于遍历数据结构
语法:
for 变量 in 数据结构:
循环体
说明:使用for-in可以依次获取某个数据结构中的元素,自动将获取出来的元素赋值给变量
list1 = ["hfahf","hello",235,True,18.9] #for:元素 for element in list1: print(element) #while:索引 n = 0 while n < len(list1): 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))) for n in range(len(list1)): print(list1[n]) #练习:求1~100之间所有偶数的和 sum1 = 0 for n1 in range(1,101): if n1 % 2 == 0: sum1 += n1 print(sum1) sum2 = 0 for n2 in range(0,-101,-2): sum2 += n2 print(sum2) #start,end,step:保持同步 """ 1.如果要指明step,则start,end,step缺一不可 2.如果step为负数,在start和end之间有负数存在 """ #else分支:for循环执行完毕之后才执行else分支 for element in list1: print(element) else: print("else") #嵌套for for i in range(1,10): for j in range(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 while n1 < 10: print(n1) #在Python中,break只能使用在循环中,跟if语句没有任何关系,if语句的存在只是一个条件的限制 if n1 == 5: #break n1 += 1 continue n1 += 1 print("over") #嵌套循环中 for i in range(5): #0~4 for j in range(3): #0~2 print("i=%d,j=%d" % (i, j)) if j == 1: #跳出的内层循环【就近原则:当前】 break #在嵌套循环中,break和continue需要跳出哪个循环,则需要在当前循环天添加break和continue语句 #一般单独为一条语句