Python基础语法知识

1.认识python

在cmd中写python源代码:
  • 先输入python,进入python环境
python 复制代码
print("hello python") #按回车,就可以输入该语句
python 复制代码
a=2 #按回车
print(a) #按回车,就可以输出a的结果
b=a+2 #按回车
print(b) #按回车,就可以输出b的结果
  • 退出python环境:输入exit(),然后回车;或者Ctrl+z,回车。
  • 执行文件夹里的python文件(后缀名是.py
python 复制代码
d: #文件在D盘中,输入d:然后回车,就进入d盘了
python python.py #输入python+文件名,就可以执行文件了,
    #Tab键可以补全文件名
在pycharm中写代码:格式化输出
python 复制代码
age=1
print("年龄是%d岁"%age)
age+=1
print("我今年的年龄是%d岁"%age)
age+=2
print("我今年的年龄是%d岁"%age)

print("我的名字是%s,我的国籍是%s"%("崔小玉","中国"))
name="周"
c="中国"
print("我的名%s,我的国%s"%(name,c))
#就记得 %d 和 %s 就行,整型和字符型;%f,浮点实数
补充几个小例子:
python 复制代码
print("aaa","bbb","ccc") #这样写中间都空一个格
print("www","baidu","com",sep=".") #sep是分隔符
print("hello",end="") #end里什么都没有表示之间连接不换行
print(123,end="\t") #\t是制表符,往后缩进的
print("python",end="\n") #\n是换行
print("bai")
输入
python 复制代码
password=input("请输入密码:")
print("刚刚输入的密码是:",password)
print(type(password)) #type()表示获取变量的类型

c=int(password) #int(),强制类型转换为int()整型
print(type(c),c)

2.判断语句和循环语句

判断语句
  • if后之间加条件,然后冒号:
  • 缩进一定要一致,if后可以跟好多语句,看缩进一致的为同一
  • elif 条件:,最后else 后没有条件,直接加:
小案例:石头剪刀布
python 复制代码
import random

print("请输入:剪刀(0),石头(1),布(2)")

a=int(input("你的输入为"))
b=random.randint(0,2) #生成随机整数,导入random,调用randint即可
print("随机生成数字为",b)

if (a==0 and b==0)or(a==1 and b==1)or(a==2 and b==2):
    print("平局")
elif (a==0 and b==1)or(a==1 and b==2)or (a==2 and b==0):
    print("我输了")
elif (a==0 and b==2)or(a==1 and b==0)or(a==2 and b==1):
    print("我赢了")
# 与and; 或or; 非not
导入相应模块import
python 复制代码
import somemodule #将整个模块somemodule导入
from somemodule import somefunction #从某个模块中导入某个函数
from somemodule import f1,f2,f3 #从某个模块中导入多个函数
from somemodule import \* #将某个模块中的全部函数导入
循环语句for
python 复制代码
for i in range(5):
    print(i)
#打印结果为012345每个数字都换行,默认范围都是从0开始

for i in range(1,10,3):
    print(i)
#range表示范围,第一个是上限,第二个数字是下限,第三个数字是步长
#都包括上下限
#打印结果为147每个数字都换行
循环语句格式for
python 复制代码
for 临时变量 in 列表或者字符串等:
循环满足条件时执行的代码

#demo
name="zjt"
for i in name:
    print(i)
    
a=["aa","bb","cc","dd"]
for x in range(len(a)):
    print(x,a[x])
#这种写法要求必须掌握 列表下标访问
循环语句while
python 复制代码
i=0
while i<5 :   #记住格式,后边用冒号
    print("第%d次循环:"%(i+1),end=" ")
    print("i=%d"%i)
    i+=1
    
#1到100求和 while循环
sum=0
i=1
while i<=100 :
    sum+=i;
    i+=1
print("1到100的和为%d"%sum)

#1到100求和 for循环
sum=0
for i in range(101):
    sum+=i
    i+=1
print(sum)
拓展:while...else语句
python 复制代码
i=0
while i<3 :
    print("%d小于3"%i)
    i+=1
else:
    print("%d大于或等于3"%i)
#在条件语句为false时执行else语句块
break语句和continue语句和pass语句
  • break语句可以跳出for和while的循环体
  • continue语句跳过当前循环,之间进行下一轮循环
  • pass是空语句,一般用做占位语句,不做任何事情
案例:打印九九乘法表,用for和while语句
python 复制代码
#while循环
i=1
while i<10:
    j=1
    while j<=i:
        print("%d*%d=%-2d"%(i,j,i*j),end=" ")
        j+=1
    print() #这样就是换行,不用\n了
    i+=1

#for循环
for i in range(1,10): #从1开始,不包括10
    for j in range(1,i+1):
        print("%d*%d=%-2d"%(i,j,i*j),end=" ")
    print()

3.字符串、列表、元组、字典

3.1字符串

  • 可以用单引号、双引号、三个双引号来表示。
  • 三引号是可以写多行语句,一次性输出。
  • 建议都使用双引号来表示,方便
  • 用\表示转义字符,(\')
  • 字符串支持拼接、截取等多种运算
python 复制代码
#字符串的截取
str="pingdingshan"
print(str)
print(str[0])
print(str[0:5])
print(str[1:10:2]) #[起始位置:结束位置:步进值]

print(str[:3]) #前边不写,默认从头开始
print(str[10:]) #后边不写,默认就是到最后

print(str+",你好") #字符串连接用加号
print((str+"\t") * 3) #乘号就是连着打印三次,str+几个空格,括起来,输出三次

print("hello\npython") #\n换行
print(r"hello\npython") #在字符串前边+r,\这个转义字符就失去作用了,原封不动打印出来输出内容,不论是单引号还是双引号
字符串的常见操作 或者 字符串函数。

网上可以直接搜。文档里也有。

序号 方法及描述
1 capitalize()将字符串的第一个字符转换为大写
2 count(str, beg= 0,end=len(string)) 返回 str 在 string 里面出现的次数。 如果 beg 或者 end指定,则返回指定范围内 str 出现的次数
3 find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中。 如果指定范围 beg 和 end,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
4 isalpha() 如果字符串至少有一个字符并且所有字符都是字母,则返回 True, 否则返回 False
5 isdigit() 如果字符串只包含数字,则返回 True ,否则返回 False.
6 isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False
7 join(seq) 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
8 len(string) 返回字符串长度
9 lstrip() 截掉字符串左边的空格或指定字符。
10 max(str) 返回字符串 str 中最大的字母。
11 min(str) 返回字符串 str 中最小的字母。
12 rstrip() 删除字符串字符串末尾的空格。
13 split(str="", num=string.count(str)) num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串

3.2列表list

  • 列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
  • 列表是写在方括号 [ ] 之间、用逗号分隔开的元素列表。
  • 列表索引值以 0 为开始值,-1 为从末尾的开始位置。
  • 列表可以使用+操作符进行拼接,使用*表示重复。
python 复制代码
#遍历
list0=[] #定义一个空列表

list1=["zhou","cui",9]
print(list1[0])
print(list1[2])

#for循环和while循环遍历列表内容
for name in list1:
    print(name)
    
i=0
while i<len(list1):
    print(list1[i])
    i+=1
常用操作:增删改查
增操作:append()、extend()、insert()
python 复制代码
#append()
list1=["zhou","cui",9]
list1.append("xiao")
print(list1) #打印结果:['zhou', 'cui', 9, 'xiao']

list2=[8,"yu"]
#list1.append(list2) #将一个列表作为一个整体,加入到列表末尾
#print(list1) #打印结果:['zhou', 'cui', 9, 'xiao', [8, 'yu']]

#extend()
list1.extend(list2) #将列表2中的每个元素,逐一追加到列表1中(扩展)
print(list1) #打印结果:['zhou', 'cui', 9, 'xiao', 8, 'yu']

#insert()
a=[0,1,"wang"]
a.insert(2,"li") #第一个表示下标,第二个表示插入的元素(对象)
print(a) #指定下标位置插入元素,打印结果:[0, 1, 'li', 'wang']
删操作:del()、pop()、remove()
python 复制代码
a=[0,0,1,"wang"]
#del a[1] #在指定位置删除一个元素
#a.pop() #弹出末尾最后一个元素
a.remove(0) #直接删除指定内容元素(如果有重复数据,只删除第一个)
print(a)
改操作:直接修改指定下标的元素内容
python 复制代码
a=[0,0,1,"wang"]
a[1]=3 #修改指定下标的元素内容
print(a)
查操作:在不在列表中 in ;not in
python 复制代码
a=[0,3,1,"wang"]
b=int(input("请输入要查找的内容:")) #找数字,要强制转换为int类型,不然输入的都是字符串类型的
if b in a:
    print("找到了")
else:
    print("找不到")

#拓展一个查找的例子
a=[0,3,1,"wang"]
print(a.index("wang",2,4)) #可以查找指定下标范围的元素,并返回找到对应数据的下标。能找到返回下标,找不到就报错;范围区间左闭右开。
反转reverse()、排序sort()
python 复制代码
a=[3,9,1,7]
print(a)

a.reverse() #反转
print(a)

a.sort() #升序
print(a)

a.sort(reverse=True) #降序
print(a)
列表的嵌套(列表可以当做一维数组,列表的嵌套当作二维数组)
python 复制代码
a=[[],[],[]] #定义三个空列表

b=[["北京","上海"],["南京","天津","河北"],["青岛","哈尔滨"]]
print(b[0]) #打印结果:['北京', '上海']
print(b[1][0]) #打印结果:南京
应用:一个学校,有3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机的分配
python 复制代码
import random

offices=[[],[],[]] #三间办公室,8个老师,随机分办公室
names=["a","b","c","d","e","f","g","h"]

for name in names:
    index=random.randint(0,2) #随机生成序号
    offices[index].append(name) #添加名字在办公室里

#开始打印
i=1
for office in offices:
    print("办公室%d的人数为:%d"%(i,len(office)))
    i+=1
    for name in office:
        print("%s"%name,end="\t")
    print()
    print("-"*18)
作业:

现有商品列表如下:

1、products = [["iphone",6888],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60],["Nike",699]],需打印出以下格式:

------ 商品列表 ------ 0 iphone 6888 1 MacPro 14800 2 小米6 2499 3 Coffee 31 4 Book 60 5 Nike 699

2、根据上面的products列表写一个循环,不断询问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,最终用户输入q退出时,打印购买的商品列表。

python 复制代码
#作业1
products=[["iphone",6888],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60],["Nike",699]]
print("------\t商品列表\t------")

i=0
for p in products:
    print("%d\t%s\t%s"%(i,p[0],p[1]))
    i+=1

#作业2
products=[["iphone",6888],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60],["Nike",699]]
carts=[]
print("------\t商品列表\t------")

while True:
    wen=input("请问您想买什么?")
    if wen=="q":
        break
    else:
        wen_index=int(wen) #将用户输入的商品编号换成整数
        carts.append(products[wen_index]) #将用户选择的商品编号对应的整个商品信息添加到 carts 列表中。

i=0
for cart in carts:
    print("%d\t%s\t%s"%(i,cart[0],cart[1]))
    i+=1

3.3元组Tuple

  • tuple与list类似,不同之处在于tuple的元素不能修改。
  • tuple写在小括号里,元素之间用逗号隔开。
  • 元组的元素不可变,但可以包含可变对象,如list。
  • 注意:定义一个只有1个元素的tuple,必须加逗号。
元组的定义与访问
python 复制代码
tup0=() #定义了一个空元组
#tup1=(1) #<class 'int'>
tup1=(1,) #<class 'tuple'>
print(type(tup1)) #不加逗号,类型为整型;加逗号,类型为元组

#元组的访问
tup1=(1,2,9,4,0)
tup2=("wnag","li","zhou")
print(tup1)
print(tup1[2]) #通过下标访问
print(tup2[0:4]) #切片,左闭右开

#元组的连接组合
tup1=(1,2,9,4,0)
tup2=("wnag","li","zhou")
tup3=tup1+tup2
print(tup3)

#元组的删除
tup1=(1,2,9,4,0)
tup2=("wnag","li","zhou")
print(tup1)
del tup1 #只能删除整个元组,不能删除元组部分内容
print(tup1) #删除之后再访问,会报错
常用操作
  • 访问:直接通过下标访问。
  • 遍历元组,可以用for循环
  • 切片:[ : : ],上限;下限;步长值
  • 元组合并(组合)
  • 元组成员关系:在不在元组里,用in
  • 得到重复元组数量:tup1.count(1)
  • 获取长度len()、最大值max()、最小值min()、强制类型转换tuple()

3.4 字典dict

  • 字典是无序的对象集合,使用键-值(key-value)存储,具有极快的查找速度。
  • 键(key)必须使用不可变类型
  • 同一个字典中,键(key)必须是唯一的。
字典的定义 和 根据键访问值
python 复制代码
d={"name":"吴彦祖","age":18}
print(d["name"])
print(d["age"])

#访问不存在的键
print(d["sex"]) #直接访问会报错

print(d.get("sex")) #使用get方法,没有找到对应的键,默认返回None

print(d.get("sex","m")) #没找到的时候可以设定默认值

增、删、改、查

python 复制代码
#增
d={"name":"吴彦祖","age":18}
id=input("输入一个id:")
d["id"]=id
print(d.get("id"))

#删 del 、  clear
d={"name":"吴彦祖","age":18}
print(d["name"])
del d["name"]
del d #也可以全部删除
#print(d["name"]) #删除指定键值对后,再次访问会报错

d.clear()
print(d) #clear() 清空内容,打印结果:{}

#改
d={"name":"吴彦祖","age":18}
d["age"]=30 #直接根据键修改值即可
print(d) 

#查
d={"name":"吴彦祖","age":18,"sex":"man"}
print(d.keys()) #得到所有的键(列表形式)
print(d.values()) #得到所有的值
print(d.items()) #得到所有的项,每个键值对是一个元组

#遍历所有的键
for i in d.keys():
    print(i)
#遍历所有的键值对
for i,j in d.items():
    print("%s %s"%(i,j))
    
#使用枚举函数,同时拿到列表中的下标和元素内容(拓展)
lists=["a","b","c","d","e"]
for i,x in enumerate(lists):
    print(i,x)

3.5 集合set

不是重点,简单过一下。

  • set和dict类似,也是一组key的集合,但不存储value。
  • 由于key不能重复,所以,在set中,没有重复的key。
  • set是无序的,重复元素在set中自动被过滤。
python 复制代码
s=set([1,2,"wang"])
print(s) #打印结果:{1, 2, 'wang'}

s=set([1,1,2,2,"wang"])
print(s) #打印结果:{1, 2, 'wang'} 过滤掉重复元素

常用操作:

  • 遍历,for循环
  • 添加add、移除remove、弹出pop、清除clear、删除集合del
总结
是否有序 是否可变类型
列表[ ] 有序 元素类型可变,可以是int可以是str,可以通过下标访问
元组( ) 有序 不可变,内容不可改,改了报错
字典{ } 无序(键顺序,无序) key不可变,val可变
集合{ } 无序 值可变(不重复)

4.函数

函数概念

如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数。

函数的定义、调用、带参数的函数、带返回值的函数、返回多个值的函数
python 复制代码
#函数的定义
def printinfo():
    print("1111111")

#函数的调用
printinfo()

#带参数的函数
def addn(a,b):
    c=a+b
    print(c)

addn(2,5)

#带返回值的函数
def addn(a,b):
    return a+b

#print(addn(2,8))
c=addn(2,8)
print(c)

#返回多个值的函数
def divide(a,b):
    shang=a/b
    yushu=a%b
    return shang,yushu #多个返回值,中间用逗号分隔

sha,yu=divide(5,2) #需要多个值来保存返回内容
print("shang=%d,yushu=%d"%(sha,yu))
课堂练习
  1. 写一个打印一条横线的函数。(提示:横线是若干个"-"组成)
  2. 写一个函数,可以通过输入的参数,打印出自定义行数的横线。(提示:调用上面的函数)
  3. 写一个函数求三个数的和
  4. 写一个函数求三个数的平均值(提示:调用上面的函数)
python 复制代码
#1、
def p():
    print("-"*15)
p()

#2、
i=int(input("需要打印几行横线:"))
while i:
    p()
    i-=1
    
#3、
def add(a,b,c):
    return a+b+c
#print(add(1,2,3))

#4、
def ave(a,b,c):
    sum=add(a,b,c)
    c=sum/3
    return c
print(ave(1,2,3))
全局变量和局部变量
  • 在函数外边定义的变量叫做 全局变量
  • 全局变量能够在所有的函数中进行访问。
  • 如果在函数中修改全局变量,那么就需要使用 global 进行声明,否则出错。
  • 如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量的,小技巧:强龙不压地头蛇。

5、文件操作

文件,就是把一些数据存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力。

文件的打开、关闭、读写操作
python 复制代码
f=open("test.txt","w") #打开文件,w(写模式),文件不存在就新建,新建在项目里
f.write("hello cxy zjt") #将字符串写入文件中
f.close() #关闭文件

#a是内容追加的写,w是内容覆盖的写
f=open("test.txt","a")
f.write("\nhhhhhhhhh")
f.close()

#read方法,读取指定的字符,开始时定位在文件头部,每执行一次向后移动指定字符数
f=open("test.txt","r")
content=f.read(5) 
print(content)
content=f.read(5)
print(content)
f.close() #记得关闭文件

#readlines方法
f=open("test.txt","r")
content=f.readlines() #一次性读取全部文件为列表,每行一个字符串元素
print(content)
i=1
for temp in content:
    print("%d:%s"%(i,temp))
    i+=1
f.close()

#readline方法,每次读一行
f=open("test.txt","r")
content=f.readline() #每次读一行
print(content)
content=f.readline()
print(content)
f.close()
文件的相关操作

有些时候,需要对文件进行重命名、删除等一些操作,还有创建文件夹、获取当前目录、改变默认目录、获取目录列表、删除文件夹。python的os模块中都有这么功能

python 复制代码
import os #需要导包,调用里边的方法
os.rename("test.txt","test1.txt")

6、错误与异常

异常

当Python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常"。

python 复制代码
#把可能出现问题的代码,放在try中
#把处理异常的代码,放在except中
try:
    print("123.txt","r") #不存在这个文件
except IOError:
    pass

#except可以捕获多个异常
try:
    open("2.txt","r") #如果123.txt文件不存在,那么会产生 IOError 异常
    print(num) #如果num变量没有定义,那么会产生 NameError 异常
except (IOError,NameError): #如果想通过一次except捕获到多个异常可以用一个元组的方式,即加括号,逗号隔开
    pass

#捕获所有的异常,用Exception。打印异常信息:
try:
    open("a.txt")
except Exception as result: #捕获所有异常,并且存储异常信息
    print(result) #输出异常信息
try...finally...

在程序中,如果一个段代码必须要执行,即无论异常是否产生都要执行,那么此时就需要使用 finally。 比如文件关闭,释放锁,把数据库连接返还给连接池等等。

python 复制代码
import time
try:
	f = open('test.txt')
	try:
		while True:
			content = f.readline()
			if len(content) == 0:
				break
			time.sleep(2)
			print(content)
	except:
		#如果在读取文件的过程中,产生了异常,那么就会捕获到
		#比如 按下了 ctrl+c
		pass
	finally:
		f.close()
		print('关闭文件')
except:
	print("没有这个文件")
作业
  1. 应用文件操作的相关知识,通过Python新建一个文件gushi.txt,选择一首古诗写入文件中。
  2. 另外写一个函数,读取指定文件gushi.txt,将内容复制到copy.txt中,并在控制台输出"复制完毕"。
  3. 提示:分别定义两个函数,完成读文件和写文件的操作。尽可能完善代码,添加异常处理。
相关推荐
MediaTea2 小时前
Python 第三方库:lxml(高性能 XML/HTML 解析与处理)
xml·开发语言·前端·python·html
mit6.8243 小时前
[AI人脸替换] docs | 环境部署指南 | 用户界面解析
人工智能·python
fantasy_arch3 小时前
Pytorch超分辨率模型实现与详细解释
人工智能·pytorch·python
wu_jing_sheng04 小时前
ArcPy 断点续跑脚本:深度性能优化指南
python
playStudy5 小时前
从0到1玩转 Google SEO
python·搜索引擎·github·全文检索·中文分词·solr·lucene
dreams_dream5 小时前
django注册app时两种方式比较
前端·python·django
励志不掉头发的内向程序员6 小时前
从零开始的python学习——常量与变量
开发语言·python·学习
海飘飘7 小时前
技术实现解析:用Trae打造Robocopy可视化界面(文末附带源码)
python
csdn5659738508 小时前
MaxCompute MaxFrame | 分布式Python计算服务MaxFrame(完整操作版)
分布式·python·odps·maxframe