编程语言是用来控制计算机的一系列指令(Instruction),它有固定的格式和词汇(不同编程语言的格式和词汇不一样),必须遵守,否则就会出错,达不到我们的目的。
习惯上,我们将这一条条指令称为代码,这些代码共同组成一个计算机程序,而用编程语言来编写程序的过程称为编码。
使用编译器将自身转换成机器语言的高级语言,通常称为编译型语言;而使用解释器将自身转换成机器语言的高级语言,称为解释型语言,Python 就是一种解释型编程语言。
有的编程语言要求 必须提前将所有源代码一次性转换成二进制指令,也就是生成一个可执行程序(比如 Windows 下的 .exe 文件),比如C语言、C++、Golang、汇编语言等,它们都属于编译型语言,使用的转换工具称为编译器。
有的编程语言可以一边执行一边转换,需要哪些源代码就转换哪些源代码,不会生成可执行程序。
比如 Python、JavaScript、PHP、Shell 等,这类编程语言称为解释型语言,使用的转换工具称为解释器。
简单地理解,编译器和解释器其实就是一个“翻译工具”。
除编译型和解释型语言外,还有一种半编译半解释型语言,比如 Java和 C# 等,这类语言将源代码先转换成一种中间文件(字节码文件),然后再将中间文件拿到虚拟机中执行。
Python 是一种开源的解释型脚本编程语言,它之所以非常流行,主要有三点原因:
python是严格区分大小写的。
# 编程之歌
print(" "*5+"程序员之歌")
print(" "*15+"——《江城子》改编\n")
print("十年生死两茫茫,写程序,到天亮,")
print("千行代码,Bug何处藏。")
print("纵使上线又怎样,朝令改,夕断肠。")
print("领导每天新想法,天天改,日日忙。")
print("相顾无言,惟有泪千行")
print("每晚灯火阑珊处,程序员,加班狂。")
注释用来向用户提示或解释某些代码的作用和功能,它可以出现在代码中的任何位置。
单行注释:#
# 这是单行注释
多行注释:三个连续的双引号或 单引号
"""
使用 3 个双引号分别作为注释的开头和结尾
可以一次性注释多行内容
这里面的内容全部是注释内容
"""
注意:多行注释中不可以嵌套多行注释。
python 采用代码缩进和冒号( : )来区分代码块之间的层次。
Python 采用 PEP 8 作为编码规范。
标识符 主要作用就是作为变量、函数、类、模块以及其他对象的名称。
# 查看python中的关键字
help("keywords")False class from or
None continue global pass
True def if raise
and del import return
as elif in try
assert else is while
async except lambda with
await finally nonlocal yield
break for not
标识符的命名,除了要遵守以上这几条规则外,不同场景中的标识符,其名称也有一定的规范可循,例如:
Python解释器自带的函数叫做内置函数,这些函数可以直接使用,不需要导入某个模块。
内置函数
注意,不要使用内置函数的名字作为标识符使用(例如变量名、函数名、类名、模板名、对象名等),虽然这样做 Python 解释器不会报错,但这会导致同名的内置函数被覆盖,从而无法使用。
n = 10
print(n) #将变量传递给函数m = n * 10 + 5 #将变量作为四则运算的一部分
print(m)print(m-30) #将由变量构成的表达式作为参数传递给函数m = m * 2 #将变量本身的值翻倍
print(m)url = "http://c.biancheng.net/cplus/"
str = "C++教程:" + url #字符串拼接
print(str)
python 是弱类型语言。
不管对于多大或者多小的整数,Python 只用一种类型存储,就是 int。
当所用数值超过计算机自身的计算能力时,Python 会自动转用高精度计算(大数计算)。
进制的表示:
数字分隔符:为了提高数字的的可读性,Python 3.x 允许使用下划线_
作为数字(包括整数和小数)的分隔符。
click = 10_000_000
num = 14_900_400_000print("python阅读量:", click) # python阅读量: 10000000
print("中国人口数:", num) # 中国人口数: 14900400000
浮点数和定点数是相对的:小数在存储过程中如果小数点发生移动,就称为浮点数;如果小数点不动,就称为定点数。
表示形式:
十进制形式:45.6、 56.2、 23.6等。
指数形式:2.1e5、 4e3等。
注意:只要写成指数形式就是小数,即使它的最终值看起来像一个整数。例如 4E3 等价于 4000,但 4E3 是一个小数。
Python 只有一种小数类型,就是 float。
num01 = 12.5
print(num01)
print(type(num01)) # floatnum02 = 0.232132131231
print(num02)
print(type(num02)) # floatnum03 = 0.000000000000000021
print(num03)
print(type(num03)) # floatnum04 = -13.43232
print(num04)
print(type(num04)) # floatnum05 = 12e6
print(num05)
print(type(num05)) # floatnum06 = 1.2 * 5.5
print(num06)
print(type(num06)) # float
Python 能容纳极小和极大的浮点数。print 在输出浮点数时,会根据浮点数的长度和大小适当的舍去一部分数字,或者采用科学计数法。
复数(Complex)是 Python的内置类型,直接书写即可。
python 中的字符串必须由双引号" "
或者单引号' '
包围。两者没有区别。
注意点:
字符串换行:
num = (20 + 3 / 4 +2 * 3)
print(num) # 26.75str = "hello world! hahaha" \"my name is litianyuan" \", is buliangshuai."
print(str) # hello world! hahahamy name is litianyuan, is buliangshuai.str02 = ("你好,最近过的咋样?""很好啊。""好的,听说不良人第六季快出来了哎。""是吗,那得好好看看。""哈哈哈。")print(str02) # 你好,最近过的咋样?很好啊。好的,听说不良人第六季快出来了哎。是吗,那得好好看看。哈哈哈。
上述代码中,字符串换行更推荐第二种括号()形式的方式。
在普通字符串或者长字符串的开头加上r
前缀,就变成了原始字符串。
str03 = r"你好啊\t ,是的,我很好。"
print(str03) # 你好啊\t ,是的,我很好。str03 = r'I\'m xiaochuhe, nice to meet you.'
print(str03) # I\'m xiaochuhe, nice to meet you.
需要注意的是,Python 原始字符串中的反斜杠仍然会对引号进行转义,因此原始字符串的结尾处不能是反斜杠,否则字符串结尾处的引号会被转义,导致字符串不能正确结束。
bytes 是 Python 3.x 新增的类型,在 Python 2.x 中是不存在的。
字节串(bytes)和字符串(string)的对比:
#通过b前缀将字符串转换成 bytes
b3 = b'http://c.biancheng.net/python/'
print("b3: ", b3)
print(b3[3])
print(b3[7:22])#为 bytes() 方法指定字符集
b4 = bytes('C语言中文网8岁了', encoding='UTF-8')
print("b4: ", b4)#通过 encode() 方法将字符串转换成 bytes
b5 = "C语言中文网8岁了".encode('UTF-8')
print("b5: ", b5) # b5: b'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x918\xe5\xb2\x81\xe4\xba\x86'
bytes 类也有一个 decode() 方法,通过该方法可以将 bytes 对象转换为字符串。
#通过 decode() 方法将 bytes 转换成字符串
str1 = b5.decode('UTF-8')
print("str1: ", str1)
True 和 False 是 Python 中的关键字,当作为 Python 代码输入时,一定要注意字母的大小写,否则解释器会报错。
布尔类型可以当做整数来对待,即 True 相当于整数值 1,False 相当于整数值 0。
在 Python 中,所有的对象都可以进行真假值的测试,包括字符串、元组、列表、字典、对象等。
bool = True + 1
print(bool)bool02 = False + 1
print(bool02)
但是在实际应用中,尽量避免这样操作。
input() 是 Python的内置函数,用于从控制台读取用户输入的内容。
input() 函数总是以字符串的形式来处理用户输入的内容,所以用户输入的内容可以包含任何字符。
name = input("请输入你的名字:")
print(name,type(name)) # strage = int(input("请输入你的年龄:"))
print(age,type(age)) # int
用 Python 内置函数将字符串转换成想要的类型:
print() 函数完全可以同时输出多个变量。
语法格式:
print (value,...,sep='',end='\n',file=sys.stdout,flush=False)
name = "萧楚河"
age = 21
email = "12345@qq.com"
print("姓名:",name,"年龄:",age,"邮箱:",email)
print("姓名:",name,"年龄:",age,"邮箱:",email,sep="||")
# 姓名:||萧楚河||年龄:||21||邮箱:||12345@qq.com
print(40,'\t',end=" ")
print(50,'\t',end=" ")
print(60,'\t',end=" ") # 40 50 60
file 参数指定 print() 函数的输出目标,file 参数的默认值为 sys.stdout,该默认值代表了系统标准输出,也就是屏幕,因此 print() 函数默认输出到屏幕。
实际上,完全可以通过改变该参数让 print() 函数输出到特定文件中,例如如下代码:
f = open("demo.txt","w") # 打开文件以便写入
print('沧海月明珠有泪',file=f)
print('蓝田日暖玉生烟',file=f)
f.close()
print() 函数使用以%
开头的转换说明符,对各种类型的数据进行格式化输出。
转换说明符只是一个占位符,它会被后面表达式(变量、常量、数字、字符串、加减乘除等各种形式)的值代替。
age = 21
print("我今年%d岁了。" %age) # 我今年21岁了。
格式化字符串可以包含多个转换说明符,这个时候也得提供多个表达式,用以替换对应的转换说明符;多个表达式必须使用小括号( )
包围起来。
age = 21
name = "萧楚河"
email = "12345@qq.com"
print("你好,我叫%s,今年%d岁,邮箱是:%s,有空记得找我玩。" %(name,age,email)) # 你好,我叫萧楚河,今年21岁,邮箱是:12345@qq.com,有空记得找我玩。
总之,有几个占位符,后面就得跟着几个表达式。并且,表达式需要一一对应。
当使用上述的转换说明符时,可以使用下面的格式指定最小输出宽度(至少占用多少个字符的位置):
num = 1234567
print("num(10):%10d." %num)
print("num(5):%5d." %num)# num(10): 1234567.
# num(5):1234567.
指定对齐方式:
- | 指定左对齐 |
---|---|
+ | 表示输出的数字总要带着符号;正数带+ ,负数带- 。 |
0 | 表示宽度不足时补充 0,而不是补充空格。 |
-
标志,因为符号对于字符串没有意义,而补 0 会改变字符串的值。n = 123456
# %09d 表示最小宽度为9,左边补0
print("n(09):%09d" % n)
# %+9d 表示最小宽度为9,带上符号
print("n(+9):%+9d" % n)
f = 140.5
# %-+010f 表示最小宽度为10,左对齐,带上符号
print("f(-+0):%-+010f" % f)
s = "Hello"
# %-10s 表示最小宽度为10,左对齐
print("s(-10):%-10s." % s)
指定小数精度:
对于小数(浮点数),print() 还允许指定小数点后的数字位数,也即指定小数的输出精度。
精度值需要放在最小宽度之后,中间用点号.
隔开;也可以不写最小宽度,只写精度。
%m.nf
%.nf
f = 3.141592653
# 最小宽度为8,小数点后保留3位
print("%8.3f" % f)
# 最小宽度为8,小数点后保留3位,左边补0
print("%08.3f" % f)
# 最小宽度为8,小数点后保留3位,左边补0,带符号
print("%+08.3f" % f)3.142
0003.142
+003.142
\n | 换行符,将光标位置移到下一行开头。 |
---|---|
\r | 回车符,将光标位置移到本行开头。 |
\t | 水平制表符,也即 Tab 键,一般相当于四个空格。 |
\a | 蜂鸣器响铃。注意不是喇叭发声,现在的计算机很多都不带蜂鸣器了,所以响铃不一定有效。 |
\b | 退格(Backspace),将光标位置移到前一列。 |
\ | 反斜线 |
’ | 单引号 |
" | 双引号 |
\ | 在字符串行尾的续行符,即一行未完,转到下一行继续写。 |
函 数 | 作 用 |
---|---|
int(x) | 将 x 转换成整数类型 |
float(x) | 将 x 转换成浮点数类型 |
complex(real,[,imag]) | 创建一个复数 |
str(x) | 将 x 转换为字符串 |
repr(x) | 将 x 转换为表达式字符串 |
eval(str) | 计算在字符串中的有效 Python 表达式,并返回一个对象 |
chr(x) | 将整数 x 转换为一个字符 |
ord(x) | 将一个字符 x 转换为它对应的整数值 |
hex(x) | 将一个整数 x 转换为一个十六进制字符串 |
oct(x) | 将一个整数 x 转换为一个八进制的字符串 |
注意:+ 不仅可以进行四则运算,还可以连接字符串。
a = 12
b = 10
sum = a + b
print(sum)name = "中国惊奇先生"
cartoon = "动漫"
size = 15.6
str = "影片类型:" + cartoon + "影片名称:" + name + "影片大小:" + str(size) + "G"
print(str)
-
除了可以用作减法运算之外,还可以用作求负运算(正数变负数,负数变正数)。
*
除了可以用作乘法运算,还可以用来重复字符串,也即将 n 个同样的字符串连接起来。
str1 = "hello "
print(str1 * 4)
/
的计算结果总是小数,不管是否能除尽,也不管参与运算的是整数还是小数。
当有小数参与运算时,//
结果才是小数,否则就是整数。
只有当第二个数字是负数时,求余的结果才是负数。换句话说,求余结果的正负和第一个数字没有关系,只由第二个数字决定。
%
两边的数字都是整数时,求余的结果也是整数;但是只要有一个数字是小数,求余的结果就是小数。
赋值运算符用来把右侧的值传递给左侧的变量(或者常量);可以直接将右侧的值交给左侧的变量,也可以进行某些运算后再交给左侧的变量,比如加减乘除、函数调用、逻辑运算等。
n = 100
f = 25.2n -= 80
print(n) # 20f *= n-10
print(f) # 252.0
&
的运算规则是:只有参与&
运算的两个位都为 1 时,结果才为 1,否则为 0。|
的运算规则是:两个二进制位有一个为 1 时,结果就为 1,两个都为 0 时结果才为 0。^
的运算规则是:参与运算的两个二进制位不同时,结果为 1,相同时结果为 0。~
为单目运算符(只有一个操作数),右结合性,作用是对参与运算的二进制位取反。例如~1
为0,~0
为1。比较运算符,也称关系运算符,用于对常量、变量或表达式的结果进行大小比较。如果这种比较是成立的,则返回 True(真),反之则返回 False(假)。
== 用来比较两个变量的值是否相等,而 is 则用来比对两个变量引用的是否是同一个对象。
在 Python 中,and 和 or 不一定会计算右边表达式的值,有时候只计算左边表达式的值就能得到最终结果。
另外,and 和 or 运算符会将其中一个表达式的值作为最终结果,而不是将 True 或者 False 作为最终结果。
对于 and 运算符,全真则为真。有假得假:
对于 or 运算符,则是有真则真,全假为假:
假设现在有两个数字,我们希望获得其中较大的一个,那么可以使用 if else 语句,例如:
if a > b:max = a
else:max = b
三目运算符的写法为:
max = a if a>b else b
Python 三目运算符支持嵌套,如此可以构成更加复杂的表达式。
max = (a if a > c else c) if a > b else (b if b > c else c)
a = 12
b = 5
c = 30
max = (a if a > c else c) if a > b else (b if b > c else c)print("最大值为:",max) # 30
上一篇:08 C语言指针