Python环境搭建,解释器安装
CPython,Jpython,ironpython。。。我们入门一般使用的Cpython
python目前最新版本的解释器是3.10版本,但是在工作中一般常用的版本有2.7,3.5,3.8,3.9版本。
官网:https://www.python.org/
下载地址:https://www.python.org/ftp/python/3.9.9/python-3.9.9-amd64.exe
python基础语法
命名规范
简单地理解,变量就是一个代号(别名),就好像我们每个人都有属于自己的名字,它的主要作用就是为了方便程序中的数据被方便地的调用而设置的。Python中变量名不是随意起的,而是要遵守一定的命名规则。
- 变量是由大小写字母(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字开头。
- 变量不能和 Python 中的关键字或保留字相同。
- 变量中不能包含特殊字符的,如:空格、@、% 以及 $ 等。
- 变量中的字母是严格区分大小写,开发中一般称之为对大小写敏感。
- 一般以下划线开头的变量名有特殊含义的,变量不能随便以下划线开头。
- 允许使用汉字作为变量名的(但是强烈不推荐使用,因为并不通用而且在部分计算机系统中不识别中文)
执行python代码,也可以查看关键字与保留字
import keyword
print(keyword.kwlist)
注释
注释就类似文章中的注解、旁白。其实就是对源代码的解释和说明,其目的是让其他开发人员能更加轻松地理解代码的作用。
注释是编写程序时,写程序的作者给一段关键性的代码进行解释或提示,能提高程序代码的可读性。一般情况下,合理的代码注释应该占源代码的 1/3 左右。
注释只是为了提高公认阅读,不会被解释器执行。
Python 支持两种写法的注释,分别是单行注释和多行注释。
# 单行注释,后面一整行不会被解释器执行成代码
"""
这是一个多行注释
三引号里面的任何内容不会被解释器执行
"""
python基本数据类型
int
int,integer,翻译:整数,整型
在python中整数都属于整型,不同于其他语言,例如C语言会根据整数的大小将整型分类为short、int、long、long long 四种类型,python只有一种整型,即int
类型,无论整型数字多大多小都属于int
。
main.py,代码:
x = 10
print(x)
# type(变量名) 表示查看这个变量代表的数据的类型
print(type(x)) # <class 'int'>
y = 0
print(type(y)) # <class 'int'>
w = -1900
print(type(w)) # print(type(w))
a = 10 * 10
print(type(a)) # print(type(w))
进制转换
说到整型,就不得不提到整型数字之间进制。
# 十进制,Decimal, 使用0-9这10个数字表达一个整数,满十进一
print(10)
print(9)
print(11)
# 二进制,Binary,使用0,1 这2个数字表达一个整数,满二进一
print(0b1010) # 打印的结果默认以十进制显示:10
# 八进制,octal,使用0~7,这8个数字表达一个整数,满八进一
print(0o0777) # 打印的结果默认以十进制显示:511
# 十六进制,hexadecimal,使用0~9,a,b,c,d,e,f 这16个字符表达一个整数,满十六进一
print(0xffffff) # 打印的结果默认以十进制显示,16777215
# 把其他进制的数字转换成二进制,例如:把十进制的10转换
print(bin(10)) # 0b1010
# 其他进制的数字转换成十六进制吗,例如:把十进制的19转换
print(hex(190)) # 0xbe
# 其他进制的数字转换成八进制,例如:把十进制的100转换
print(oct(100)) # 0o144
# 把其他的数字转换成十进制的
r = int("0b100", base=2) # 这里就已经帮我们把十进制转换成二进制
print(r) # 4
r = int("0x5ff", base=16)
print(r) # 1535
print(hex(1535)) # 0x5ff
r = int("0o755", base=8) # 493
print(oct(r)) # 0o755
float
在python中小数都属于浮点型(float
),有两种表现形式
# 小数点形式(常用)
f = 3.14
print(f) # 3.14
print(type(f)) # <class 'float'>
# 指数形式: aEn 或 aen
'''
3.2E5 = 3.2×105,其中 3.2 是尾数,5 是指数。
2.7E-3 = 2.7×10-2,其中 2.7 是尾数,-3 是指数。
0.2E8 = 0.2×107,其中 0.2 是尾数,8 是指数。
'''
f = 3.14E5
print(f, type(f)) # 314000.0 <class 'float'>
f = 3E5
print(f, type(f)) # 300000.0 <class 'float'>
# E的后面跟着正数,则右边补0,3表示3个0
f = 3.1E3
print(f) # 3100
# E的后面跟着负数,则左边补0,-3表示3个0
f = 3.1E-3
print(f) # 0.0031
bool
布尔型(Boolean)是一种数据的类型,这种类型只有两种值,即"真"与"假"。在python中用 bool
表示布尔类型,“真"用关键字True
表示,有成立的意思;“假"用False
表示,有不成立的意思。
print(4 == 2) # False
print(5 > 1) # True
name = "jiang"
print(name == "moluo") # False
print(1 == "1") # False
不光上面代码语句的结果是布尔值,单独一个数据没有进行计算也可以都有自己的布尔值,这就涉及到布尔的零值。
# 任意数据类型都一个具体值的布尔值为False,
# 我们称为零值。该类型的其他值的布尔值皆为True。
print(bool("")) # 字符串的零值 “”
print(bool(0)) # 整型的零值 0
print(bool("0"))
print(bool("-1"))
print(bool("moluo"))
print(bool(-1))
print(bool(0.1))
str
str,string,字符串,表示一串字符。
字符串是由零个或多个字符组成的有限序列。字符串的内容可以包含字母、标点、特殊符号、中文、日文等全世界的所有字符。
在python中字符串是通过单引号''
或者双引号""
标识的。
# str, 字符串
# 这里是错误的写法
# x = xiaoming
name = "xiaoming" # 只要不是用于计算的,仅仅用于记录的数据,都可以使用字符串来表示
print(name, type(name)) # xiaoming <class 'str'>
mobile = '13928835901'
print(mobile, type(mobile)) # 13928835901 <class 'str'>
# 除非特殊情况,否则不要使用下面的方式声明字符串
message = """hello, xiaoming"""
print(message, type(message))
message2 = '''hello, xiaohong'''
print(message2, type(message2))
强调:Python 字符串中的双引号和单引号没有任何区别!
s1 = "hi libai\nhi,moluo"
print(s1)
s2 = 'I\'m moluo'
print(s2)
s3 = "D:\\nythonProject\\nenv\\Scripts\\python.exe"
print(s3)
# str, 字符串
# 这里是错误的写法
# x = xiaoming
# 下面才是正确写法
# name = "xiaoming" # 只要不是用于计算的,仅仅用于记录的数据,都可以使用字符串来表示
# print(name, type(name)) # xiaoming <class 'str'>
#
# mobile = '13928835901'
# print(mobile, type(mobile)) # 13928835901 <class 'str'>
#
#
# # 除非特殊情况,否则不要使用下面的方式声明字符串
# message = """hello, xiaoming"""
# print(message, type(message))
#
# message2 = '''hello, xiaohong'''
# print(message2, type(message2))
# 在字符串中如果要让程序输出的时候,达到换行,回车,缩进的效果,则需要填写有特殊含义的转义字符
# message3 = "老师:\n小明滚出去!" # 正常情况下,n没有任何作用,在字符串,想要让内容换行,就需要对n进行转义,使用\反斜杠就可以转义了。
# print(message3)
# message3 = "老师:\n\t小明滚出去!" # 缩进,一个\r就相当于键盘里面tab键
# print(message3)
# message3 = "老师:\r小明滚出去!" # 把光标移动到本行的第一个字符位置
# print(message3)
#
# message3 = "abcdef\rwww" # www会把左侧的所有内容抹掉了
# print(message3)
# 注意:字符串是有开始和结束符号的,都是双引号,所以一个正常的字符串,必然是成对的引号圈起来,如果出现奇数个引号,则会报错!
# message = "tony: 'welcome to beijing!'"
# print(message) tony: 'welcomen to beijing!'
#
# message = 'tony: "welcome to beijing!"'
# print(message) tony: "welcomen to beijing!"
# message = "tony: \"welcomen to beijing!\""
# print(message) # tony: "welcomen to beijing!"
# 因为在字符串中,反斜杠具有特殊作用,代表转义能力,所以如果要输出一个普通的反斜杠,就需要2个反斜杠了
# message = "C:\python\\new\python3.exe" # C:\python\new\python3.exe
# print(message)
# message = "C:\\python\\new\\python3.exe"
# print(message)
# 如果希望一个字符串中没有任何的特殊字符,不要什么换行,也不要什么回车了,
message = r"C:\python\new\python3.exe" # 在左边引号的左边加上小写字母r
print(message) # C:\python\new\python3.exe
# r 表示raw,原始的意思,用在字符串中,表示原样输出
长字符串
也叫文本字符串。就是三个单引号或者三个双引号圈住的内容,实际上也是字符串。
但是,开发中基本没有人这么写。开发中也不建议使用这样的字符串!!!因为长字符串作为注释了!!!!!
s = """
s = "hi moluo\\nhi,python"
I'm moluo
这是一个python解释器路径:"D:\\nythonProject\\nenv\Scripts\python.exe"
长字符串中放置单引号或者双引号不会导致解析错误
"""
print(s)
格式化输出
之前讲到过 print() 函数的用法,这只是最简单最初级的形式,print() 还有很多高级的玩法,比如格式化输出。
# 允许用户在终端下输入自己的账号和密码
username = input("请输入您的登录账号:")
password = input("请输入您的登录密码:")
# 格式化输出的字符串中存在多个变量,则需要在 % 后面把对应的变量使用小括号括起来。
print("您的账号:%s,登录密码:%s" % (username, password))
year = 2022
month = 1
date = 7
# %02d 以整数输出,如果不足2位整数的,左边加0补充进去
print("%d-%02d-%02d" % (year, month, date))
year = 2022
month = 10
date = 17
print("%d-%02d-%02d" % (year, month, date))
在 print() 函数中,由引号包围的是格式化字符串,它相当于一个字符串模板,可以放置一些转换说明符(占位符)。本例的格式化字符串中包含一个%s
和%d
说明符,它最终会被后面的name和age 变量的值所替代。中间的%
是一个分隔符,它前面是格式化字符串,后面是要输出的表达式。
print() 函数使用以%
开头的转换说明符对各种类型的数据进行格式化输出,具体请看下表。
# # print() 标准输出,把数据当成字符串,打印到终端
#
# # 可以打印一个数据
# x = 10
# print(x)
#
# # 也可以打印多个数据,多个数据使用英文逗号隔开
# y = 100
# z = 200
# print(x, y, z, 400)
"""格式化输出"""
# 问题:小明花了10块钱买了3斤的香蕉,问香蕉多少钱一斤?
# money = 10
# weight = 3
# avg = money/weight
# print("%.2f" % avg)
# 格式化输出
# year = 2022
# month = 10
# date = 7
# # 2022-03-16
# print("%d-03-16" % year) # %d 表示把对应位置的数字作为整数输出
# print("%d-%02d-16" % (year, month)) # %02d 表示把对应位置的数字使用2个位置显示,如果位数不够,左边补0
# print("%d-%02d-%02d" % (year, month, date)) # %02d 表示把对应位置的数字使用2个位置显示,如果位数不够,左边补0
# x = 1
# y = 1
# z = x*y # 相乘
# print("%dx%d=% 2d" % (x,y,z)) # % 2d ---> 按2个位置输出数字,如果不够2个位置,则补充空格
#
# x = 9
# y = 9
# z = x*y
# print("%dx%d=%d" % (x,y,z))
#
# name = "小李"
# print("我叫%s" % name)
# 标准输入 input,允许开发者在终端下输入一些数据到python程序中
name = input("请输入您的大名:")
print("我叫%s" % name) # 此时name代表的就是程序运行时,用户通过键盘录入的数据了,肯定是字符串
6. 单行注释与多行注释
7. 不同进制的数字的写法,以及进制之间的转换的几个函数
二进制:0b开头 bin()
八进制:0o开头 oct()
十进制:普通数字 int()
十六进制:0x开头 hex()
8. 字符串的转义符号
\\
\n
\r\n
\t
练习
# 变量的命名规则
x = "Ctrl+wheel,可以控制编辑器中的字体大小"
print(x)
print(x)
print(x)
print(x)
print("Ctrl+鼠标中间的滚轮,可以控制编辑器中的字体大小") # ctrl+D
banzhang = 100
print(banzhang)
b1 = 100
a1 = 200
# 不能以数字开头!!
# 1a = 100
# if这种的单词,就是在python有特殊作用的单词,不能作为变量名
# if = 300
# 不能使用特殊符号
# a1+1 = 2
# 变量名区分大小写
# a = 100
# print(A)
# 以下变量符合规范,可以使用
user = "xiaoming"
age = 17
my_password = "123456"
myMobile = "13312345678"
#查看关键字和保留字
# ctrl+A 全选内容
import keyword
print(keyword.kwlist)
# ['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', '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']
#变量的声明过程
x = 10
print(x)
x = 20
print(x)
x = 10
y = "hi, libai"
z = True
x = "hello world"
print(x)
# 注释
x = 10 # 这一行代码其实分2步,x 表示在内存中开辟一个空间, = 10 这个表示让数据10存入到x所指向的空间
# 这里重复的对x进行赋值,表示是对x对应的空间里面的内容进行修改,
x = 20
"""
打印x代表的数据
print 是python中提供给我们用于开发和调试的一个打印指令(函数)
print(x)
"""
"""
多行注释必须由三个引号组成,里面的内容不会被python解释器运行
引号可以三个单引号,也可以是双引号
"""
'''
但是,引号必须使用英文输入法下的引号,不能使用中文的
'''
# ‘’‘ 这是中文的引号,不能被python识别
# ’‘’
print (123)
print(456)
# 基本数据类型-整型
x = 10
print(x)
# type(变量名) 表示查看这个变量代表的数据的类型
print(type(x)) # <class 'int'>
exit()
y = 0
print(type(y)) # <class 'int'>
w = -1900
print(type(w)) # print(type(w))
a = 10 * 10
print(type(a)) # print(type(w))
# 整型-进制转换
# # 十进制,Decimal, 使用0-9这10个数字表达一个整数,满十进一
# print(10)
# print(9)
# print(11)
#
# # 二进制,Binary,使用0,1 这2个数字表达一个整数,满二进一
# print(0b1010) # 打印的结果默认以十进制显示:10
#
# # 八进制,octal,使用0~7,这8个数字表达一个整数,满八进一
# print(0o0777) # 打印的结果默认以十进制显示:511
#
# # 十六进制,hexadecimal,使用0~9,a,b,c,d,e,f 这16个字符表达一个整数,满十六进一
# print(0xffffff) # 打印的结果默认以十进制显示,16777215
#
#
# # 把其他进制的数字转换成二进制,例如:把十进制的10转换
# print(bin(10)) # 0b1010
#
# # 其他进制的数字转换成十六进制吗,例如:把十进制的19转换
# print(hex(190)) # 0xbe
#
# # 其他进制的数字转换成八进制,例如:把十进制的100转换
# print(oct(100)) # 0o144
#
#
# # 数学中,任何数字的0次方都是1
# print(10**0) # 1
# print(-1**0) # -1
# print(0**0) # 1,注意一下
# 把其他的数字转换成十进制的
r = int("0b100", base=2) # 这里就已经帮我们把十进制转换成二进制
print(r) # 4
r = int("0x5ff", base=16)
print(r) # 1535
print(hex(1535)) # 0x5ff
r = int("0o755", base=8) # 493
print(oct(r)) # 0o755
# 浮点型
# 凡是小数都是浮点类型,float
x = 3.1415
print(x) # 3.1415
print(type(x)) # <class 'float'>
x = 10.0
print(x, type(x)) # 10.0 <class 'float'>
f = 3.14E5
print(f, type(f)) # 314000.0 <class 'float'>
f = 3E5
print(f, type(f)) # 300000.0 <class 'float'>
# E的后面跟着正数,则右边补0
f = 3.1E3
print(f) # 3100.0
# E的后面跟着负数,则左边补0
f = 3.1E-3
print(f) # 0.0031
# 布尔型
# # 布尔类型,bool,boolean
#
# x = True
#
# print(x, type(x)) # True <class 'bool'>
#
#
# x = False
# print(x, type(x)) # False <class 'bool'>
#
#
# """
# 布尔类型只有2个值,
# 一般在程序中用于判断,比较,这种情况的的结果就是布尔值
# """
#
# age = 18
# print(age > 18) # False
#
# age = 10
# print(age < 18) # True
# 把其他数据转换成布尔值
# print(bool(0)) # False
# print(bool(0.0)) # False
# print(bool(10)) # True
# print(bool(-10)) # True
# print(bool(3.14)) # True
print(bool("")) # False
print(bool(" ")) # True
print(bool("0")) # True
print(bool("-1")) # True
# 字符串
# str, 字符串
# 这里是错误的写法
# x = xiaoming
# 下面才是正确写法
# name = "xiaoming" # 只要不是用于计算的,仅仅用于记录的数据,都可以使用字符串来表示
# print(name, type(name)) # xiaoming <class 'str'>
#
# mobile = '13928835901'
# print(mobile, type(mobile)) # 13928835901 <class 'str'>
#
#
# # 除非特殊情况,否则不要使用下面的方式声明字符串
# message = """hello, xiaoming"""
# print(message, type(message))
#
# message2 = '''hello, xiaohong'''
# print(message2, type(message2))
# 在字符串中如果要让程序输出的时候,达到换行,回车,缩进的效果,则需要填写有特殊含义的转义字符
message3 = "老师:\n小明滚出去!" # 正常情况下,n没有任何作用,在字符串,想要让内容换行,就需要对n进行转义,使用\反斜杠就可以转义了。
print(message3)
message3 = "老师:\n\t小明滚出去!" # 缩进,一个\r就相当于键盘里面tab键
print(message3)
message3 = "老师:\r小明滚出去!" # 把光标移动到本行的第一个字符位置
print(message3)
message3 = "abcdef\rwww" # www会把左侧的所有内容抹掉了
print(message3)
# 注意:字符串是有开始和结束符号的,都是双引号,所以一个正常的字符串,必然是成对的引号圈起来,如果出现奇数个引号,则会报错!
message = "tony: 'welcome to beijing!'"
print(message) # tony: 'welcomen to beijing!'
message = 'tony: "welcome to beijing!"'
print(message) # tony: "welcomen to beijing!"
message = "tony: \"welcomen to beijing!\""
print(message) # tony: "welcomen to beijing!"
# 因为在字符串中,反斜杠具有特殊作用,代表转义能力,所以如果要输出一个普通的反斜杠,就需要2个反斜杠了
message = "C:\python\\new\python3.exe" # C:\python\new\python3.exe
print(message)
message = "C:\\python\\new\\python3.exe"
print(message)
# 如果希望一个字符串中没有任何的特殊字符,不要什么换行,也不要什么回车了,
message = r"C:\python\new\python3.exe" # 在左边引号的左边加上小写字母r
print(message) # C:\python\new\python3.exe
# r 表示raw,原始的意思,用在字符串中,表示原样输出
# 输入输出
# # print() 标准输出,把数据当成字符串,打印到终端
#
# # 可以打印一个数据
# x = 10
# print(x)
#
# # 也可以打印多个数据,多个数据使用英文逗号隔开
# y = 100
# z = 200
# print(x, y, z, 400)
"""格式化输出"""
# 问题:小明花了10块钱买了3斤的香蕉,问香蕉多少钱一斤?
# money = 10
# weight = 3
# avg = money/weight
# print("%.2f" % avg)
# 格式化输出
# year = 2022
# month = 10
# date = 7
# # 2022-03-16
# print("%d-03-16" % year) # %d 表示把对应位置的数字作为整数输出
# print("%d-%02d-16" % (year, month)) # %02d 表示把对应位置的数字使用2个位置显示,如果位数不够,左边补0
# print("%d-%02d-%02d" % (year, month, date)) # %02d 表示把对应位置的数字使用2个位置显示,如果位数不够,左边补0
# x = 1
# y = 1
# z = x*y # 相乘
# print("%dx%d=% 2d" % (x,y,z)) # % 2d ---> 按2个位置输出数字,如果不够2个位置,则补充空格
#
# x = 9
# y = 9
# z = x*y
# print("%dx%d=%d" % (x,y,z))
#
# name = "小李"
# print("我叫%s" % name)
# 标准输入 input,允许开发者在终端下输入一些数据到python程序中
name = input("请输入您的大名:")
print("我叫%s" % name) # 此时name代表的就是程序运行时,用户通过键盘录入的数据了,肯定是字符串