第一个python程序
打开 Pycharm,选择 Create New Project
,创建一个新项目
为什么要使用虚拟环境
创建的python项目过多,有时同个项目需要调用同个python模块,若该模块属于单线程调用,则会导致另一个项目需要等待或者调用失败的结果。若遇到这种情况,则需要创建项目虚拟环境解决该问题。
- 右键选择项目,选择-New,选择-Python File
- 录入.py文件名称,回车
- 输入代码:print(“hello, world!”)
- 运行代码:任意位置右键,选择:Run
- 运行成功后,控制台会输出运行结果
注释
单行注释
以#开头,#右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用
#我是注释,可以在里写一些功能说明之类的哦
print('hello world')
多行注释
以三个“ ’ ”包裹,或以“ " ”包裹
'''
我是多行注释,可以写很多很多行的功能说明
下面的代码完成 ,打印一首诗
名字叫做:春江花月夜
'''
"""
我也是多行注释
"""
print('║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║')
print('║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║')
print('║ │春│滟│江│空│江│江│人│不│白│谁│可│玉│此│鸿│昨│江│斜│不│ ║')
print('║ │江│滟│流│里│天│畔│生│知│云│家│怜│户│时│雁│夜│水│月│知│ ║')
print('║ │潮│随│宛│流│一│何│代│江│一│今│楼│帘│相│长│闲│流│沉│乘│ ║')
print('║ │水│波│转│霜│色│人│代│月│片│夜│上│中│望│飞│潭│春│沉│月│ ║')
print('║ │连│千│绕│不│无│初│无│待│去│扁│月│卷│不│光│梦│去│藏│几│ ║')
print('║春│海│万│芳│觉│纤│见│穷│何│悠│舟│徘│不│相│不│落│欲│海│人│ ║')
print('║江│平│里│甸│飞│尘│月│已│人│悠│子│徊│去│闻│度│花│尽│雾│归│ ║')
print('║花│,│,│,│,│,│,│,│,│,│,│,│,│,│,│,│,│,│,│ ║')
print('║月│海│何│月│汀│皎│江│江│但│青│何│应│捣│愿│鱼│可│江│碣│落│ ║')
print('║夜│上│处│照│上│皎│月│月│见│枫│处│照│衣│逐│龙│怜│潭│石│月│ ║')
print('║ │明│春│花│白│空│何│年│长│浦│相│离│砧│月│潜│春│落│潇│摇│ ║')
print('║ │月│江│林│沙│中│年│年│江│上│思│人│上│华│跃│半│月│湘│情│ ║')
print('║ │共│无│皆│看│孤│初│望│送│不│明│妆│拂│流│水│不│复│无│满│ ║')
print('║ │潮│月│似│不│月│照│相│流│胜│月│镜│还│照│成│还│西│限│江│ ║')
print('║ │生│明│霰│见│轮│人│似│水│愁│楼│台│来│君│文│家│斜│路│树│ ║')
print('║ │。│。│。│。│。│?│。│。│。│?│。│。│。│。│。│。│。│。│ ║')
print('║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║')
print('║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║')
变量以及类型
在程序中,有时我们需要对2个数据进行求和,那么该怎样做呢?
大家类比一下现实生活中,比如去超市买东西,往往咱们需要一个菜篮子,用来进行存储物品,等到所有的物品都购买完成后,在收银台进行结账即可
如果在程序中,需要把2个数据,或者多个数据进行求和的话,那么就需要把这些数据先存储起来,然后把它们累加起来即可
在Python中,存储一个数据,需要一个叫做变量的东西,如下示例:
num1 = 100 #num1就是一个变量,就好一个小菜篮子
num2 = 87 #num2也是一个变量
result = num1 + num2 #把num1和num2这两个"菜篮子"中的数据进行累加,然后放到 result变量中
说明:
所谓变量,可以理解为 菜篮子 ,如果需要存储多个数据,最简单的方式是有多个变量,当然
了也可以使用一个
程序就是用来处理数据的,而变量就是用来存储数据的
数据类型
生活中的类型
比如说车作为一个变量,可以装东西,根据用途不同区分
(1)装人的
①装单个人-摩托车
②装多个人-小轿车
③装很多人-大巴车
(2)装货的
①货车
python数据类型
根据生活中的情况,同样的,为了更充分的利用内存空间以及更有效率的管理内存,变量是有不同的类型的 :
怎么查看数据类型
type(变量名), isinstance(变量名,数据类型)
value1 = 123
print(type(value1))
python语言的优点
在python中,只要定义了一个变量,而且它有数据,那么它的类型就已经确定了,不需要咱们开发者主动的去说明它的类型,系统会自动辨别
可变数据类型
可变数据类型:list/dict/set,值改变,id值(内存地址)不改变
不可变数据类型
不可变数据类型包含:number\string\tuple,值改变,id值(内存地址)改变
变量命名/标识符
变量是一种存储数据的载体。是个“名字”、“标签”,用于区分一个值与其他值,可以被读取和修改
1、第一个字符必须是字母或者下划线
2、标识符的其他部分由字母、数字和下划线组成
3、标识符区分大小写
4、标识符不能是Python保留字
保留字
import keyword
print(keyword.kwlist)
"""
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class',
'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for',
'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not',
'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
"""
命名规则
见名知义
起一个有意义的名字,尽量做到看一眼就知道是什么意思(提高代码可读性) 比如: 名字就定义为name , 定义学生用 student
驼峰命名
小驼峰式命名法(lower camel case): 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog
大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:
FirstName、LastName
下划线命名
还有一种命名法是用下划线“_”来连接所有的单词,比如send_buf
输入和输出
输出
print可以有多个参数
print(字符1,字符2,字符3,....)
自动换行输出 等同于 :
print(字符2,字符2,字符3,....,end='\n')
如何不换行输出?
print(字符1,字符2,字符3,....,end='')
举例
print('1',2) #默认换行,相当于2的后面有个,end='\n'
print('31',21)
print('1',2,end='') #不换行
print('31',21)
输入
input()
函数可以获取用户输入的内容,获取的所有内容都是字符串类型
#input: 出来的全部都是字符串类型。
username = input('请输入用户名:')
password = input('请输入密码:')
print(username,type(username))
print(password,type(password))
格式化输出
格式化字符串字面值
在字符串前加前缀 f
或 F
,通过 {expression}
表达式,把 Python 表达式的值添加到字符串内。
name='张三'
print(f'你好,我叫{name}')
格式说明符是可选的,写在表达式后面,可以更好地控制格式化值的方式。下例将 pi 舍入到小数点后三位:
import math
print(f'The value of pi is approximately {math.pi:.3f}.')
占位符输出
% 运算符(求余符)也可用于字符串格式化。给定 'string' % values
,则 string 中的 % 实例会
以零个或多个 values 元素替换。此操作被称为字符串插值。例如:
#整数
print('%d' % 20)
#浮点数
print('%.1f' % 1.11) # 取1位小数
#字符串
print('%s' % 'hello world')
format用法
相对基本格式化输出采用‘%’的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’
print('{} {}'.format('hello','world')) # 不带字段
print('{0} {1}'.format('hello','world')) # 带数字编号
print('{0} {1} {0}'.format('hello','world')) # 打乱顺序
print('{a} {tom} {a}'.format(tom='hello',a='world')) # 带关键字
运算符
算数运算符 + - * / ** // %,比较运算符 > ==,赋值运算符= +=,逻辑运算符and or, 成员运算符is。
在进行运算时,建议使用(),否则会按照默认的优先级进行计算
is也算是比较运算符,==比较的是值,is比较的是两者的地址
运算优先级依次:
算数运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
a=30
b=11
print(a+b)
print(a-b)
print(a*b)
print(a/b)
print(a%b) #取余,不会四舍五入
print(a//b) #取整
print(a**b) #取幂
比较运算:
print(a > b)
print(a < b)
print(a == b) # 比较的是两边的值是否相等
print(a != b)
print(a >= b)
print(a <= b)
赋值运算符:
a = b
print(a)
a += b
print(a)
a -= b
print(a)
a *= b
print(a)
a /= b
print(a)
a %= b
print(a)
a //= b
print(a)
a **= b
print(a)
逻辑运算符:
a=10
b=20
print(a>b and a<b)
print(a>b or a<b)
print(not a<b)
身份运算:
a = "234"
print(a is "234") #判断内存地址相同
print(a is not "678") #判断内存地址不相同 等于print(not(a is "678"))取反
print(not(a is "678"))
字符串
**定义:**Python中的字符串用单引号/双引号/三个单/双引号括起来
str1='欢迎大家'
str2="哈哈"
str3="""MS221_NN"""
str4='''MS221_NN'''
print(type(str1))
print(type(str2))
print(type(str3))
print(type(str4))
#单双引号可以配合使用
content = 'I am taibai, 18 year old'
content = "I'm taibai, 18 year old"
切片
对字符串进行索引,切片出来的数据都是字符串类型。
切片语法格式: 变量名称[开始索引位置: 结束的索引位置: 步长 ]
根据索引值区间取值:会包含开始索引值,不会包含结束索引位置的值(含头不含尾/左闭右开)
索引值从左往右 从0开始,依次+1
索引值从右往左 从-1开始,依次-1
str3='qwertyuio'
print("学号:",str3[0:5])
#字符串最后的一个字符
print(str3[-1])
#倒数第二
print(str3[-2])
#倒数第三
print(str3[-3])
#从某个位置开始取到末尾
print(str3[1:])
#从开始取到某个位置
print(str3[:3])
#隔一个字符从左往右取值直到结束
print(str3[0::2])
#倒序:倒序逻辑都要用反的
s8 = str3[-1:-6:-1]
print(s8)
str4="""MS221_NN"""
print(str4[-1::-2])
print(str4[::-2])
print(str4[::])
#按索引:s1[index]
#按照切片: s1[start_index: end_index+1]
#按照切片步长: s1[start_index: end_index+1:2]
# 反向按照切片步长: s1[start_index: end_index后延一位:2]
转义
特殊字符需要原字符输出 :
方式一: \ 转义
方式二: r/R
特殊的字符有哪些:\n ’ " \ \t \000
str4='你好\n我叫\t张三,\
今年18一枝花'
print(str4)
str5=R'\n'
str6=r'\n'
print(str5,str6)
print("1111")
字符串运算符
+ 字符串的拼接
*号 复制
in/not in 成员判断
str7="abc"
str8="edfg"
print(str7*3)
print('a' not in str7)
string常见的内置函数
str13="abcdef123_"
print("转化为大写:",str13.upper()) # upper 转化为大写
print(str13.lower()) # casefold/lower 字符串全变小写
print(str13.capitalize()) # capitalize 首字母大写
print("是否字母或者数字:",str13.isalnum()) # isalnum 是否字母或者数字 ,返回True
print("是否是字母或者中文:",str13.isalpha()) # isalpha 是否是字母或者中文
print("是否为纯数字",str13.isnumeric()) # isdigit/isnumeric 是否为纯数字
print(max(str13)) # 取最大值,是通过ASCII来进行比较
print(min(str13)) # 取最小值,是通过ASCII来进行比较
print(len(str13)) # 计算字符串长度
names="jeffery NN water"
print(names.find("NN",0,len(names))) # 找到字符返回匹配字符的开始索引值,否则返回-1
print(names.index("NN",0,len(names))) # 找到字符返回匹配字符的开始索引值,没有找到报异常
print('-'.join(names)) # 按照指定分隔符连接字符串各个元素,列表也行 join
newstr='h-e-l-l-o-w-o-r-l-d'
print(newstr.split('-')) # 根据指定的分隔符把字符串转为List split
print(names.replace("NN","MS221") ) # 替换字符串中部分字符 replace
str18=" abcdefg "
print(str18.strip()) # 前后去空格 strip()
print(str18.rstrip()) # rstrip()右边去空格
print(str18.lstrip()) # lstrip()左边去空格
其他字符串函数(了解)
'''
center指定长度居中对齐且空格处指定字符填充
count统计指定字符个数
encode编码
decode解码
endswith判断是否以指定字符结尾
startswith判定是否以指定字符开头
isspace判断字符串是否全由空格组成
ljust指定长度左对齐且不足处由指定字符补齐
islower判断字符串是否全由小写字母组成
isupper判断字符串是否全由大写字母组成
rjust指定长度右对齐且不足处由指定字符补齐
zfill指定长度右对齐且不足处由0补齐
rsplit从右开始切割字符串
swapcase大小写互换
rpartition从目标字符串的末尾也就是右边开始搜索分割符
partition从目标字符串的开始也搜索分割符
chr将Unicode码转成str
ord将str转换成Unicode
title每个单词的首字母大写
'''
a = 'qew reTy'
b = ['a', 'b', 'c']
c=104
d=c
e="s"
f=e
print(a.center(30, '-'))
print(a.count('e'))
print(a.encode('utf-8'))
print(a.encode('utf-8').decode('utf-8'))
print(a.endswith('y'))
print(a.startswith('q'))
print(a.isspace())
print(a.isupper())
print(a.ljust(30, '-'))
print(a.rjust(30, '-'))
print(a.zfill(30))
print(a.rsplit())
print(a.swapcase())
print('2020.2.2.demo1.py'.rpartition('.'))
print('2020.2.2.demo1.py'.partition('.'))
print(chr(d))
print(ord(e))
print(a.title())
包含:int float complex(复数)
数字类型的定义
num_212class=180
print(type(num_212class)) # 查看变量类型
print(num_212class)
zx=9.3
print(type(zx))
print(zx)
print(isinstance(num_212class,int)) # 判断变量是否为某个数据类型,如果是指定某个类型
则返回True,否则返回False
常用的数字类型函数
import math
x=-6.8
abs(x) #取数字的绝对值
print(abs(x))
math.ceil(x) #返回数字的上入整数 ceil(4.1) 返回 5
math.floor(x) #返回数字的下舍整数 floor(5.4) 返回5
round(x,3) #四舍五入 n保留几位小数
print(max("123")) # 取最大
print(max("123")) # 取最小
num5=45.89
value3=round(num5)
print(value3)
布尔
bool() 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False(0),否则是True(1)
#非空即True
s1 = ' '
print(bool(s1))
s1 = '' # 空字符串
print(bool(s1))
print(2 > 1)
print(3 < 1)
print(True)
print('True')
#数值里面,非0即是True
num1 = 0
num2 = 4
print(bool(num1))
print(bool(num2))
print(bool(-2))