python基础语法
python基础语法
1.基础
1.整型默认都是int,因为int和long没有啥区别
然后还有浮点,字符串,布尔,复数等
计算:
a=321
b=123
d='hello,world'
print(a+b)
print(a/b)
print(type(d))#输出类型
类型转换:
int()
float()
str()#转化为字符串
chr()#转化为一个字符
ord()#把字符串或者一个字符转化为相应的编码
2.输入和计算:
a = int(input('a = '))
b = int(input('b = '))
#a=input()
print('%d + %d = %d' % (a, b, a + b))
print('%d - %d = %d' % (a, b, a - b))
print('%d * %d = %d' % (a, b, a * b))
print('%d / %d = %f' % (a, b, a / b))
print('%d // %d = %d' % (a, b, a // b))
print('%d %% %d = %d' % (a, b, a % b))
print('%d ** %d = %d' % (a, b, a ** b))
%d是占位符
计算:
指数:**
整除://
is is not身份运算符
in not in成员运算符
not or and逻辑运算符
flag1=1>1
print(flag1 is True)
print('flag1=',flag1)
运行结果:
False
flag1= False
# 如果代码太长写成一行不便于阅读 可以使用\对代码进行折行
is_leap = (year % 4 == 0 and year % 100 != 0) or \
year % 400 == 0
或且非:or and not
if not(age >= 18 and age <= 70):
print('不符合条件')
else:
print('符合条件')
2.条件和循环
条件:
x = float(input('x = '))
if x > 1: #有个冒号
y = 3 * x - 5
elif x >= -1:
y = x + 2
else:
y = 5 * x + 3
嵌套:
if x>1:
y=1
else:
if x>=1:
y=2
else:
y=3
直接比较字符串:
s='sb'
if s=='sb':
...#省略
根号:
a=int(input())
b=a**0.5
for循环:
#示例1
sum=0
for x in range(101):
sum+=x
print(sum)
#示例2
for i in range(1,10):
for j in range(1,i+1):
print(i)
range(101)
可以产生一个0到100的整数序列。
range(1, 100)
可以产生一个1到99的整数序列。
range(1, 100, 2)
可以产生一个1到99的奇数序列,其中2是步长,即数值序列的增量。
break和continue都可以用
while循环:
while True:
sum+=1
if sum>7:
break
3.函数
def f(x):
m=x
return m
x=int(input())
print(f(x))
可以给参数加默认值
def add(a=0,b=0,c=0)
return a+b+c
可变参数:
# 在参数名前面的*表示args是一个可变参数def add(*args):
total = 0
for val in args:
total += val
return total
# 在调用add函数时可以传入0个或多个参数print(add())
print(add(1))
print(add(1, 2))
print(add(1, 2, 3))
print(add(1, 3, 5, 7, 9))
4.字符串
s1 = 'hello, world!'
s2 = "hello, world!"
# 以三个双引号或单引号开头的字符串可以折行s3 = """
hello,
world!
"""
print(s1, s2, s3, end='')
#print('\n')意思是endl
print默认的是结尾加换行
print(end='')的意思是结尾不加换行
如果不希望字符串中的\表示转义,我们可以通过在字符串的最前面加上字母r来加以说明:
s1 = r'\'hello, world!\''
s2 = r'\n\\hello, world!\\\n'
我们可以使用+运算符来实现字符串的拼接,可以使用* 运算符来重复一个字符串的内容,可以使用in和not in来判断一个字符串是否包含另外一个字符串(成员运算),我们也可以用[]和[:]运算符从字符串取出某个字符或某些字符(切片运算),代码如下所示。
s1 = 'hello ' * 3
print(s1) # hello hello hello
s2 = 'world'
s1 += s2
print(s1) # hello hello hello world
print('ll' in s1) # True
print('good' in s1) # False
str2 = 'abc123456'
# 从字符串中取出指定位置的字符(下标运算)
print(str2[2]) # c
# 字符串切片(从指定的开始索引到指定的结束索引)
print(str2[2:5]) # c12
print(str2[2:]) # c123456
print(str2[2::2]) # c246
print(str2[::2]) # ac246
print(str2[::-1]) #654321cba
print(str2[-3:-1]) # 45
字符串的用法:
str1 = 'hello, world!'
# 通过内置函数len计算字符串的长度
print(len(str1)) # 13
# 获得字符串变大写后的拷贝print(str1.upper()) # HELLO, WORLD!
# 从字符串中查找子串所在位置print(str1.find('or')) # 8
print(str1.find('shit')) # -1
# 与find类似但找不到子串时会引发异常
# print(str1.index('or'))
# print(str1.index('shit'))
# 检查字符串是否以指定的字符串开头print(str1.startswith('He'))#False
print(str1.startswith('hel')) # True
# 检查字符串是否以指定的字符串结尾print(str1.endswith('!')) # True
# 将字符串以指定的宽度居中并在两侧填充指定的字符
print(str1.center(50, '*'))
# 将字符串以指定的宽度靠右放置左侧填充指定的字符
print(str1.rjust(50, ' '))
str2 = 'abc123456'
# 检查字符串是否由数字构成print(str2.isdigit()) # False
# 检查字符串是否以字母构成print(str2.isalpha()) # False
# 检查字符串是否以数字和字母构成print(str2.isalnum()) # True
str3 = ' jackfrued@126.com '
print(str3)
# 获得字符串修剪左右两侧空格之后的拷贝print(str3.strip())
我们之前讲过,可以用下面的方式来格式化输出字符串。
a, b = 5, 10
print('%d * %d = %d' % (a, b, a * b))
当然,我们也可以用字符串提供的方法来完成字符串的格式,代码如下所示。
a, b = 5, 10
print('{0} * {1} = {2}'.format(a, b, a * b))
5.列表
list1=[1,2,3,4,5,6]
list2=[1,2]*3
print(list2)
print(list1[-3])#输出倒数第几个数
print(list1[0])
print(len(list1))#输出长度
list1[2]=666
for i in list1:#遍历列表
print(i,end=' ')
print('\n')
for i,j in enumerate(list1):#这个函数可以同时获得索引和值
print(i,j)
list1.append(8)
list1+=[100,200]#添加到后面
print(list1)
list2+=list1#列表合并
print(list2)
list1.pop(0)
print(list1)
list2.clear()
print(list2)
运行结果:
[1, 2, 1, 2, 1, 2]
4
1
6
1 2 666 4 5 6
0 1
1 2
2 666
3 4
4 5
5 6
[1, 2, 666, 4, 5, 6, 8, 100, 200]
[1, 2, 1, 2, 1, 2, 1, 2, 666, 4, 5, 6, 8, 100, 200]
[2, 666, 4, 5, 6, 8, 100, 200]
[]
自己品吧
列表切片:
p=['wlq','cjm','lrl','lhy']
p+=['ljq']#加在后面
s1=p[:]
print(s1)
s2=p[1:4]
print(s2)
s3=p[-3:-1]
print(s3)
s4=p[::-1]#翻转
print(s4)
运行结果:
['wlq', 'cjm', 'lrl', 'lhy', 'ljq']
['cjm', 'lrl', 'lhy']
['lrl', 'lhy']
['ljq', 'lhy', 'lrl', 'cjm', 'wlq']
继续自己品
列表的排序:
list1=[5,7,2,4,5,67]
list2=sorted(list1)#这种不改变原顺序
print(list1)
print(list2)
list3=sorted(list1,reverse=True)#从大到小
print(list3)
list4=['wlq','tc','6666']
list5=sorted(list4,key=len)//按字符串长度排序
print(list5)
list1.sort(reverse=True)
print(list1)
list1.sort()//不加就从小到大
print(list1)
list1.sort(reverse=False)#从小到大
print(list1)
运行结果:
[5, 7, 2, 4, 5, 67]
[2, 4, 5, 5, 7, 67]
[67, 7, 5, 5, 4, 2]
['tc', 'wlq', '6666']
[67, 7, 5, 5, 4, 2]
[2, 4, 5, 5, 7, 67]
[2, 4, 5, 5, 7, 67]
自己品
列表的类型随意:
list1=[1,'wlq',2]
print(list1[1])
列表的生成器:
import sys#调用
f=[x for x in range(1,10)]#生成器
print(f)
f=[x+y for x in 'ABC' for y in '1234']#一一结合
print(f)
f=[x**2 for x in range(1,5)]
print(f)
print(sys.getsizeof(f))#输出内存字节数
f=[x for x in range(10) if (x%2==0 and x!=6)]
print(f)#带条件的
运行结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
['A1', 'A2', 'A3', 'A4', 'B1', 'B2', 'B3', 'B4', 'C1', 'C2', 'C3', 'C4']
[1, 4, 9, 16]
96
[0, 2, 4, 8]
自己品
元组:不能改的列表(暂时判断对写题没太大用,以后再补充)
6.set集合
set意思应该比较熟悉了8 不放运行结果了,自己品
有自动排序效果
set1={1,2,2,3,4,5,5}
print(set1)
print('len=',len(set1))
set2=set(range(1,10))
set3=set((1,2,3,4,4,4,4))
print(set2,' ',set3)
set1.add(6)#加入元素
set2.update([11,12])#加入list
print(set2)
set2.discard(5)#删除特定元素
print(set2)
if 4 in set2:
set2.remove(4)#删除元素
print(set2)
print(set3.pop())#输出最小的元素(被删除的那个)
print(set3)
集合的成员、交集、并集、差集等运算:
(#后面是函数写法)
# 集合的交集、并集、差集、对称差运算
print(set1 & set2)
# print(set1.intersection(set2))
print(set1 | set2)
# print(set1.union(set2))
print(set1 - set2)
# print(set1.difference(set2))
print(set1 ^ set2)
# print(set1.symmetric_difference(set2))
# 判断子集和超集
print(set2 <= set1)
# print(set2.issubset(set1))
print(set3 <= set1)
# print(set3.issubset(set1))
print(set1 >= set2)
# print(set1.issuperset(set2))
print(set1 >= set3)
# print(set1.issuperset(set3))
7.字典
有点类似map
s={'wlq':96,'ljq':98}
print(s)
# 创建字典的构造器语法
t1=dict(one=1,two=2,three=3,four=4)
print(t1)
t2=dict(zip(['a', 'b', 'c'], '123'))#合并字典
print(t2)
t3={i:i**2 for i in range(5)}#生成器
print(t3)
print(s['ljq'])#可以由键值找到
#遍历字典
for i in s:
print(f'{i}:{s[i]}')
s['ljq']=99#更改值
s.update(lrl=100)#添加值
print(s)
if 'lrl' in s:
print(s['lrl'])
print(s.get('lrl'))
# get方法也是通过键获取对应的值但是可以设置默认值
print('有点迷惑:',s.get('lrl', 101))
# 删除字典中的元素
print(s.pop('lrl'))
print(s.popitem())
print(s.popitem())
# 清空字典
s.clear()
运行结果:
{'wlq': 96, 'ljq': 98}
{'one': 1, 'two': 2, 'three': 3, 'four': 4}
{'a': '1', 'b': '2', 'c': '3'}
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
98
wlq:96
ljq:98
{'wlq': 96, 'ljq': 99, 'lrl': 100}
100
100
有点迷惑: 100
100
('ljq', 99)
('wlq', 96)
自己品吧
8.面向对象基础
例子:
class Student(object):
# __init__是一个特殊方法用于在创建对象时进行初始化操作
# 通过这个方法我们可以为学生对象绑定name和age两个属性
#注意self
def __init__(self, name, age):
self.name = name # 定义有哪些参数
self.age = age
def study(self, course_name):
print('%s正在学习%s.' % (self.name, course_name))
# PEP 8要求标识符的名字用全小写多个单词用下划线连接
# 但是部分程序员和公司更倾向于使用驼峰命名法(驼峰标识)
def watch_movie(self):
if self.age < 18:
print('%s只能观看《熊出没》.' % self.name)
else:
print('%s正在观看岛国爱情大电影.' % self.name)
# 一定注意这里的缩进 不然用不上类
def main():
# 创建学生对象并指定姓名和年龄
stu1 = Student('骆昊', 38) # 传的是self之后的
# 给对象发study消息
stu1.study('Python程序设计')
# 给对象发watch_av消息
stu1.watch_movie()
stu2 = Student('王大锤', 15)
stu2.study('思想品德')
stu2.watch_movie()
if __name__ == '__main__':
main()
输出结果:
骆昊正在学习Python程序设计.
骆昊正在观看岛国爱情大电影.
王大锤正在学习思想品德.
王大锤只能观看《熊出没》.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现