一、第一个Python程序
用vim编写,格式:
vim hello.py
然后按 i 进入插入模式开始写代码,注意所有的代码都要用英文输入法,先写括号和引号,再在引号里面写内容(为了避免引号、括号不匹配)
代码:
print("hello,world!")
在文件所在路径运行程序(python xxx 是用python2运行程序;python3 xxx是用python3运行程序)
python hello.py 或者
python3 hello.py
二、Python的交互模式
在终端输入python(python2 或 python3均可)进入Python的交互模式,按exit()退出
在Python的交互模式下,可以供开发人员测试一些基本的语法
在终端输入ipython也可以进入Python的交互模式(按exit退出),比python多了一个输入Linux命令的功能,所以在能用到Python交互模式的时候尽量用ipython比较好
如果系统未安装ipython,可以输入以下命令进行安装:
sudo apt install ipython
sudo apt install ipython3
三、注释
<1> 看以下程序示例(未使用注释)
<2> 看以下程序示例(使用注释)
<3>注释的作用
-
通过用自己熟悉的语言,在程序中对某些代码进行标注说明,这就是注释的作用,能够大大增强程序的可读性
- 便于以后再维护代码的时候能快速知道代码的作用
-
用来做测试的代码可以进行注释
- 如果遇到你认为没用的代码,不要轻易删除,可能牵一发而动全身,可以先把它注释掉
<4>注释的分类
1.单行注释
以 # 或者 // 开头,#右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用
# 我是注释,可以在里写一些功能说明之类的哦 print('hello world')
(# 号后面的内容不能换行,换行就变成了执行的代码,如果要换行,要在新的一行行首再加一个#号)
2.多行注释
三个连续单引号或三个连续双引号,引号里面的内容就是注释
'''我是多行注释,可以写很多很多行的功能说明 这就是我牛X指出 哈哈哈。。。 ''' ''' 下面的代码完成 ,打印一首诗 名字叫做:春江花月夜 作者,忘了 ''' print('╔═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╗') print('║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║') print('║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║') print('║ │春│滟│江│空│江│江│人│不│白│谁│可│玉│此│鸿│昨│江│斜│不│ ║') print('║ │江│滟│流│里│天│畔│生│知│云│家│怜│户│时│雁│夜│水│月│知│ ║') print('║ │潮│随│宛│流│一│何│代│江│一│今│楼│帘│相│长│闲│流│沉│乘│ ║') print('║ │水│波│转│霜│色│人│代│月│片│夜│上│中│望│飞│潭│春│沉│月│ ║') print('║ │连│千│绕│不│无│初│无│待│去│扁│月│卷│不│光│梦│去│藏│几│ ║') print('║春│海│万│芳│觉│纤│见│穷│何│悠│舟│徘│不│相│不│落│欲│海│人│ ║') print('║江│平│里│甸│飞│尘│月│已│人│悠│子│徊│去│闻│度│花│尽│雾│归│ ║') print('║花│,│,│,│,│,│,│,│,│,│,│,│,│,│,│,│,│,│,│ ║') print('║月│海│何│月│汀│皎│江│江│但│青│何│应│捣│愿│鱼│可│江│碣│落│ ║') print('║夜│上│处│照│上│皎│月│月│见│枫│处│照│衣│逐│龙│怜│潭│石│月│ ║') print('║ │明│春│花│白│空│何│年│长│浦│相│离│砧│月│潜│春│落│潇│摇│ ║') print('║ │月│江│林│沙│中│年│年│江│上│思│人│上│华│跃│半│月│湘│情│ ║') print('║ │共│无│皆│看│孤│初│望│送│不│明│妆│拂│流│水│不│复│无│满│ ║') print('║ │潮│月│似│不│月│照│相│流│胜│月│镜│还│照│成│还│西│限│江│ ║') print('║ │生│明│霰│见│轮│人│似│水│愁│楼│台│来│君│文│家│斜│路│树│ ║') print('║ │。│。│。│。│。│?│。│。│。│?│。│。│。│。│。│。│。│。│ ║') print('║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║') print('║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║') print('╚═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╝')
四、Python2的中文解决
如果直接在程序中用到了中文,比如:
print('你好')
解决的办法为:在程序的开头写入如下代码,这就是中文注释
#coding=utf-8
修改之后的程序:
#coding=utf-8 print('你好')
运行结果:
你好
注:在python的语法规范中推荐使用的方式:
# -*- coding:utf-8 -*-
五、变量
<1>变量的定义
在程序中,有时我们需要对2个数据进行求和,那么该怎样做呢?
大家类比一下现实生活中,比如去超市买东西,往往咱们需要一个菜篮子,用来进行存储物品,等到所有的物品都购买完成后,在收银台进行结账即可
如果在程序中,需要把2个数据,或者多个数据进行求和的话,那么就需要把这些数据先存储起来,然后把它们累加起来即可
在Python中,存储一个数据,需要一个叫做变量
的东西,如下示例:
num1 = 100 #num1就是一个变量,就好一个小菜篮子 num2 = 87 #num2也是一个变量 result = num1 + num2 #把num1和num2这两个"菜篮子"中的数据进行累加,然后放到 result变量中
变量的名称应该体现出数据的意义
1 score = 100 2 #定义了一个变量,这个变量的名字就叫做score,它里面存储了一个数值 100 3 4 high = 100 #单位是cm 5 weight = 7.5 #购买苹果的重量 斤 6 7 applePrice = 3.5 #苹果的价格 元/斤 8 money = applePrice * weight 9 #先把3.5 * 7.5的值算出来,再赋值给money,这也是定义一个变量 10 11 money = money - 10 12 #第二次赋值就不叫定义变量,而是给这个变量赋上一个新的值 13 print(money) 14 #程序从上往下执行,这里money的值为减掉10后的值
(用的vim编辑器,代码前面的数字表示行号)
说明:
- 所谓变量,可以理解为
菜篮子
,如果需要存储多个数据,最简单的方式是有多个变量,当然了也可以使用一个 - 程序就是用来处理数据的,而变量就是用来存储数据的
<2>变量的类型以及数据类型转换
2.1 变量类型
程序中:
为了更充分的利用内存空间以及更有效率的管理内存,变量是有不同的类型的,如下所示:
怎样知道一个变量的类型呢?
- 在python中,只要定义了一个变量,而且它有数据,那么它的类型就已经确定了,不需要咱们开发者主动的去说明它的类型,系统会自动辨别
- 可以使用type(变量的名字),来查看变量的类型
2.2 数据类型转换
常用的数据类型转换
函数 | 说明 |
---|---|
int(x [,base ]) | 将x转换为一个整数 |
long(x [,base ]) | 将x转换为一个长整数 |
float(x ) | 将x转换到一个浮点数 |
complex(real [,imag ]) | 创建一个复数 |
str(x ) | 将对象 x 转换为字符串 |
repr(x ) | 将对象 x 转换为表达式字符串 |
eval(str ) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s ) | 将序列 s 转换为一个元组 |
list(s ) | 将序列 s 转换为一个列表 |
chr(x ) | 将一个整数转换为一个字符 |
unichr(x ) | 将一个整数转换为Unicode字符 |
ord(x ) | 将一个字符转换为它的整数值 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
oct(x ) | 将一个整数转换为一个八进制字符串 |
例:
1 age = int(input("请输入你的年龄:")) 2 #input获取的所有数据,都当做字符串类型,需要进行数据类型转换 3 #不进行转换程序会报错 4 if age > 18: 5 print("你已成年!")
六、输入、输出
1.输入
Python2 版本
1.1 raw_input()
在Python2中,获取键盘输入的数据的方法是采用 raw_input 函数,例:
password = raw_input("请输入密码:") print '您刚刚输入的密码是:', password
运行结果:
请输入密码:123456
您刚刚输入的密码是:123456
注意:
- raw_input()的小括号中放入的是,提示信息,用来在获取数据之前给用户的一个简单提示
- raw_input()在从键盘获取了数据以后,会存放到等号右边的变量中
- raw_input()会把用户输入的任何值都作为字符串来对待
1.2 input()
input()函数与raw_input()类似,但其接受的输入必须是表达式(把接收的数据当做代码来执行)
input()接受表达式输入,并把表达式的结果赋值给等号左边的变量
>>> a = input() 123 >>> a 123 >>> type(a) <type 'int'> >>> a = input() abc Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1, in <module> NameError: name 'abc' is not defined >>> a = input() "abc" >>> a 'abc' >>> type(a) <type 'str'> >>> a = input() 1+3 >>> a 4 >>> a = input() "abc"+"def" >>> a 'abcdef' >>> value = 100 >>> a = input() value >>> a 100
Python3 版本
没有raw_input()函数,只有input()
并且 python3中的input与python2中的raw_input()功能一样
2.输出
python中变量的输出
1. 普通的输出
# 打印提示
print('hello world')
print('给我的卡---印度语,你好的意思')
2. 格式化输出
<1>格式化操作的目的
比如有以下代码:
pirnt("我今年10岁") pirnt("我今年11岁") pirnt("我今年12岁")
-
想一想:
在输出年龄的时候,用了多次"我今年xx岁",能否简化一下程序呢???
-
答:
字符串格式化
<2>什么是格式化
看如下代码:
age = 10 print("我今年%d岁"%age) age += 1 print("我今年%d岁"%age) age += 1 print("我今年%d岁"%age)
在程序中,看到了%
这样的操作符,这就是Python中格式化输出。
age = 18 name = "xiaohua" print("我的姓名是%s,年龄是%d"%(name,age))
<3>常用的格式符号
下面是完整的,它可以与%符号使用列表:
格式符号 | 转换 |
---|---|
%c | 字符 |
%s | 通过str() 字符串转换来格式化 |
%i | 有符号十进制整数 |
%d | 有符号十进制整数 |
%u | 无符号十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数(小写字母) |
%X | 十六进制整数(大写字母) |
%e | 索引符号(小写'e') |
%E | 索引符号(大写“E”) |
%f | 浮点实数 |
%g | %f和%e 的简写 |
%G | %f和%E的简写 |
3. 换行输出
在输出的时候,如果有
那么,此时
后的内容会在另外一行显示
print("1234567890-------") # 会在一行显示 print("1234567890 -------") # 一行显示1234567890,另外一行显示-------
4.练一练
打印名片
1 """ 2 age = 18 3 print("你的年龄为:%d" % age) 4 #格式化,整数取值用 %d 5 6 name = "李茂贞" 7 print("你的名字是:%s" % name) 8 #字符串取值用 %s 9 10 high = input("请输入你的身高:") 11 "input()接受表达式输入,并把表达式的结果赋值给等号左边的变量" 12 print(high) #print也可以打印变量 13 14 """ 15 16 print("#################################") 17 #打印名片 18 #1. 使用input获取必要的信息 19 name = input("请输入名字:") 20 sex = input("请输入你的性别:") 21 age = int(input("请输入你的年龄:")) 22 #input获取的数据默认是字符串类型,这里强制转换为int类型 23 QQ = int(input("请输入QQ:")) 24 25 #2. 使用print来打印名片 26 print("====================") 27 print("姓名:%s" % name) 28 print("性别:%s" % sex) 29 print("年龄:%d" % age) 30 print(" QQ:%d" % QQ) 31 print("====================")
七、if判断语句
<1>if判断语句介绍
if语句是用来进行判断的,其使用格式如下:
if 要判断的条件: 条件成立时,要做的事情
demo1:
age = 30 print "------if判断开始------" if age>=18: print "我已经成年了" print "------if判断结束------"
运行结果:
------if判断开始------
我已经成年了
------if判断结束------
demo2:
age = 16 print "------if判断开始------" if age>=18: print "我已经成年了" print "------if判断结束------"
运行结果:
------if判断开始------ ------if判断结束------
小总结:
- 以上2个demo仅仅是age变量的值不一样,结果却不同;能够看得出if判断语句的作用:就是当满足一定条件时才会执行那块代码,否则就不执行那块代码
注意:
- 代码的缩进为一个tab键,或者4个空格
- if条件满足,执行if后面的代码块(代码前面有连续的tab键),而不是一条语句,else同理
<2>练一练
要求:从键盘获取自己的年龄,判断是否大于或者等于18岁,如果满足就输出“哥,已成年,网吧可以去了”
不满足就输出“未成年,回家写作业去吧!”
代码:
1 age = int(input("请输入你的年龄:")) 2 if age > 18: 3 print("哥,已成年,网吧可以去了!") 4 else: 5 print("未成年,回家写作业去吧!")
八、标识符、关键字、命名规则
标示符和关键字
<1>标示符(也就是变量名)
什么是标示符,看下图:
开发人员在程序中自定义的一些符号和名称
标示符是自己定义的,如变量名 、函数名等
<2>标示符的命令规则
标示符由字母、下划线和数字组成,且数字不能开头
思考:下面的标示符哪些是正确的,哪些不正确,为什么?
fromNo12 from#12 my_Boolean my-Boolean Obj2 2ndObj myInt test1 Mike2jack My_tExt _test test!32 haha(da)tt int jack_rose jack&rose GUI G.U.I
python中的标识符是区分大小写的
<3>命名规则
3.1 见名知意
起一个有意义的名字,尽量做到看一眼就知道是什么意思(提高代码可 读性) 比如: 名字 就定义为 name , 定义学生 用 student
3.2 驼峰命名法
小驼峰式命名法(lower camel case): 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog
大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:FirstName、LastName
不过在程序员中还有一种命名法比较流行,就是用下划线“_”来连接所有的单词,比如send_buf
<4>关键字
什么是关键字?
python一些具有特殊功能的标示符,这就是所谓的关键字
关键字,是python已经使用的了,所以不允许开发者自己定义和关键字相同的名字的标示符
查看关键字:
and as assert break class continue def del elif else except exec finally for from global if in import is lambda not or pass print raise return try while with yield
可以通过以下命令进行查看当前系统中python的关键字
八、运算符
python支持以下几种运算符
<1>算术运算符
下面以a=10 ,b=20为例进行计算
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 两个对象相加 a + b 输出结果 30 |
- | 减 | 得到负数或是一个数减去另一个数 a - b 输出结果 -10 |
* | 乘 | 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200 |
/ | 除 | x除以y b / a 输出结果 2 |
// | 取整除 | 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
% | 取余 | 返回除法的余数 b % a 输出结果 0 |
** | 幂 | 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000 |
例:
>>> 9/2.0 4.5 >>> 9//2.0 4.0
<2>赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值运算符 | 把=号右边的结果给左边的变量 num=1+2*3 结果num的值为7 |
例:
>>> a, b = 1, 2 >>> a 1 >>> b 2
<3>复合赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
<4>比较(关系)运算符
运算符 | 描述 | 示例 |
---|---|---|
== | 检查两个操作数的值是否相等,如果是则条件变为真。 | 如a=3,b=3则(a == b) 为 true |
!= | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | 如a=1,b=3则(a != b) 为 true |
<> | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | 如a=1,b=3则(a <> b) 为 true。这个类似于 != 运算符 |
> | 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 | 如a=7,b=3则(a > b) 为 true |
< | 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 | 如a=7,b=3则(a < b) 为 false |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 | 如a=3,b=3则(a >= b) 为 true |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 | 如a=3,b=3则(a <= b) 为 true |
<5>逻辑运算符
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |