python 简单基础
os环境:redhat 7.2
解释器:ipython (redhat7有自带的python,但是ipython能用tab键补齐命令)
版本: python-2.7
#1. 输入输出
输出:
print
print a ##输出的是a所代表的值
-------------------------
In [1]: a = "hello"
In [2]: print a
hello
In [3]: a = 1
In [4]: print a
1
In [5]: print "a"
a
--------------------------
print 100+200 ##输出的是100+200的值
-----------------------------------
In [6]: print "100 + 200"
100 + 200
In [7]: print "100 + 200 =",100+200
100 + 200 = 300
-----------------------------------
输入:
raw_input input
a = raw_input()
-----------------------
In [3]: a = raw_input()
1
In [4]: a
Out[4]: '1'
-----------------------
a = raw_input("请输入一个数字:")
-----------------------
In [6]: a = raw_input("please input a number: ")
please input a number: 1
In [7]: a
Out[7]: '1'
------------------------
a = input("waht is your name?")
--------------------------
In [4]: a = input("waht is your name?")
waht is your name?"yang"
---------------------------
input 与 raw_input 的区别:
input 会假设用户输入的是合法的python表达式,
raw_input 会把所有的输入当作原始数据(raw data),然后将其放入字符串中,意味着用 raw_input
读取的输入都是在哦福传类型的,要想对输入的数据进行操作,就要用到类型的强制转换
int(a) ##将a强转换为int类型
#2. 数据类型
python 会自动识别你输入的类型
type(a) ##查看a的类型
a = 1.0 type(a)显示float
a = 1 type(a)显示int
a = "python" type(a)显示str
a = 1L type(a)显示long
c语言中浮点类型分为单精度(float)与双精度(double)
python没有double类型,但是float精度是双精度的
强制类型转换:
int(a) ##a转换为int
str(a) ##a转换为字符串
float(a) ##a转换为浮点数
python为了便于书写,引入科学计数(类型:float):
1.2e-3 == 0.0012
1.2e4 == 12000
#3. 运算符
算术运算符:
+
-
* #乘
/ #除
** #幂
赋值运算符:
= #后面的值复制给前面
+= #先 + 再 = a+=1 <==> a=a+1
-= #先 - 再 = a-=1 <==> a=a-1
关系运算符:
>
<
>=
<=
!=
==
逻辑运算符:
not #逻辑非
and #逻辑与
or #逻辑或
###序列#####
python中有六种内建的序列: 列表 元组 字符串 Unicode字符串 buffer对象 xrange对象
序列的通用操作: 索引 分片 加 乘 以及成员资格(in or not in) 还有计算序列的长度,找出最大元素和最小元素
索引:
序列中所有的元素都是有编号的-------从左往右是从0开始递增 ,编号就是索引号
还有负数索引,最后一位(最右一位)的索引为 -1
格式: 序列[索引号] 返回的是的当前索引号对应的序列元素
可以通过变量名去引用一个序列,通过索引值来查看元素,也能直接用字面值去使用索引,以下面的字符串为例:
字面直接使用索引:
In [20]: 'hello'[1]
Out[20]: 'e'
用变量名引用一个序列,再使用索引:
In [21]: a='hello'
In [22]: a[1]
Out[22]: 'e'
分片(切片):
如果说索引是查看但个元素,那么分片操作就是来访问一定范围内的元素.
格式:序列 [ 起始索引号 : 终止索引号 : 步长 ]
切片的范围: [ 起始索引号 , 终止索引号 )
步长:默认为1 步长为2的切片包括的是从开始到结束每隔1的元素
步长可以为负数 步长为 -1 代表将序列倒序输出
起始索引号与终止索引号可以缺省,缺省值分别为0,len(序列)
序列相加:
用加运算符可以进行同类型序列的连接操作
In [24]: [1,2,3,4]+[2,3,4]
Out[24]: [1, 2, 3, 4, 2, 3, 4]
序列的乘法:
序列*整型数字n 会生成一个新的序列 在这个序列中原来的序列会被重复n次
长度,最大值,最小值:
len(序列) 返回序列中所包含元素的数量,即序列的长度
max(序列) 返回序列中最大的元素 比较 ASCII 码的大小
min(序列) 返回序列中最小的元素
成员资格:
元素a in 序列 序列中是否有元素a 如果有,返回 True
not in 与 in 恰好相反
#4.字符串str
python 中的字符串被定义为引号之间的字符集合. 字符串能进行索引与切片.
还有加法 乘法
字符串一旦被创建,元素不可变
#5.元组tuple()与列表list()
元组:()
定义空元组: a = ()
元组元素不可更改
元组只有两个操作 (a 是一个元组):
a.count(元素) ##返回元素在a中重复的次数
a.index(元素) ##返回元素在a中的第一个索引号
列表:[]
定义空列表 a = []
列表可以修改,能执行添加等操作
a.append 在列表末尾追加新的对象
a.extend 可以在列表末尾追加一个序列的多个值
a.insert(位置,元素) 在某个位置(索引号)添加元素
a.remove(元素) 移除元素在列表中第一个匹配值
a.sort 排序
a.count 返回元素在a中重复的次数
a.index 返回元素在a中的第一个索引号
a.pop 移除一个元素(默认最后一个),并返回该元素的值 ,也能以索引号作为参数移除该索引对应的元素
a.reverse 倒序输出
#6. 分支语句
if 判断条件 :
第一个语句
第二个语句
else :
第一个语句
第二个语句
if 判断条件 :
第一个语句
第二个语句
elif 判断条件 :
第一个语句
第二个语句
else
python使用 冒号" : " 跟 缩进 来判断语句块的执行,C语言使用{}
python没有 switch-case 语句,所以大部分分支语句都用 if-else
缩进时最好用空格
#7.集合set()
set() 强制转换为集合
差集 s1 - s2 == s1.difference(s2) s1.difference_update(s2) == s1=s1 - s2
交集 s1 & s2 == s1.intersection(s2)
并集 s1 | s2 == s1.union(s2)
s1.issubset(s2) ##s1是不是s2的子集
s1.issuperset(s2) ##s2是不是s1的超集
s1.isdisjoint(s2) ##判断是否相交
### 脚本
脚本第一行: #!/usr/bin/python 脚本运行环境,用 which python 查看
为增加可移植性(脚本在不同版本python之间运行)
#!/usr/bin/env python 使用当前版本的python运行
第一个脚本(a+b):
cat input.py
************************************
#!/usr/bin/python ##脚本运行环境,用 which python 查看
a = raw_input("please input a=")
b = raw_input("please input b=")
print int(a)+int(b) ##如果用 print int(a+b)之后,先执行字符串的 a+b 再将 a+b 转换为int类型
************************************
关于脚本里编码格式(python默认并不能识别中文):
input.py:
************************************
#!/usr/bin/python
a = int(raw_input("请输入一个数字:"))
************************************
[root@desktop pyjiaoben]# python input.py
File "input.py", line 3
SyntaxError: Non-ASCII character '\xe8' in file input.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
执行时会报错,不识别第三行的中文
可以在脚本开头加下面这一行参数:
#coding=utf-8 ##识别utf-8格式
或者是下面这几行中的任意一行:
#coding:utf-8
#encoding:utf-8
#enoding=utf-8
#-*-coding:utf-8
input.py:
************************************
#!/usr/bin/python
#coding=utf-8
a = int(raw_input("请输入一个数字:"))
************************************
[root@desktop pyjiaoben]# python input.py
请输入一个数字:1
第二个脚本(计算一个月有多少分钟):
-----------------------------------------------------------
#!/usr/bin/python
#coding=utf-8
daysPerMonth = int(raw_input("请输入你要计算的月的天数:"))
hoursPerDay = 24
minutesPerHour = 60
print "本月有",daysPerMonth * hoursPerDay * minutesPerHour,"分钟"
-----------------------------------------------------------
第三个脚本(用户登陆):
-------------------------------------------
#!/usr/bin/python
#coding=utf-8
user = "fentiao"
passwd = "westos"
import getpass
for i in range(1,4) :
userName = raw_input("请输入账户名称:")
passWord = getpass.getpass("请输入密码:")
if userName == user and passWord == passwd :
print("登陆成功!")
break
elif i == 3 :
print("您的3次机会已用完,登录失败")
else :
print("帐号或密码错误,请重新登陆。")
print("您还有%d次登陆机会\n" %(3-i))
-------------------------------------------
os环境:redhat 7.2
解释器:ipython (redhat7有自带的python,但是ipython能用tab键补齐命令)
版本: python-2.7
#1. 输入输出
输出:
print a ##输出的是a所代表的值
-------------------------
In [1]: a = "hello"
In [2]: print a
hello
In [3]: a = 1
In [4]: print a
1
In [5]: print "a"
a
--------------------------
print 100+200 ##输出的是100+200的值
-----------------------------------
In [6]: print "100 + 200"
100 + 200
In [7]: print "100 + 200 =",100+200
100 + 200 = 300
-----------------------------------
输入:
raw_input input
a = raw_input()
-----------------------
In [3]: a = raw_input()
1
In [4]: a
Out[4]: '1'
-----------------------
a = raw_input("请输入一个数字:")
-----------------------
In [6]: a = raw_input("please input a number: ")
please input a number: 1
In [7]: a
Out[7]: '1'
------------------------
a = input("waht is your name?")
--------------------------
In [4]: a = input("waht is your name?")
waht is your name?"yang"
---------------------------
input 与 raw_input 的区别:
input 会假设用户输入的是合法的python表达式,
raw_input 会把所有的输入当作原始数据(raw data),然后将其放入字符串中,意味着用 raw_input
读取的输入都是在哦福传类型的,要想对输入的数据进行操作,就要用到类型的强制转换
int(a) ##将a强转换为int类型
#2. 数据类型
python 会自动识别你输入的类型
type(a) ##查看a的类型
a = 1.0 type(a)显示float
a = 1 type(a)显示int
a = "python" type(a)显示str
a = 1L type(a)显示long
c语言中浮点类型分为单精度(float)与双精度(double)
python没有double类型,但是float精度是双精度的
强制类型转换:
int(a) ##a转换为int
str(a) ##a转换为字符串
float(a) ##a转换为浮点数
python为了便于书写,引入科学计数(类型:float):
1.2e-3 == 0.0012
1.2e4 == 12000
#3. 运算符
算术运算符:
+
-
* #乘
/ #除
** #幂
赋值运算符:
= #后面的值复制给前面
+= #先 + 再 = a+=1 <==> a=a+1
-= #先 - 再 = a-=1 <==> a=a-1
关系运算符:
>
<
>=
<=
!=
==
逻辑运算符:
not #逻辑非
and #逻辑与
or #逻辑或
###序列#####
python中有六种内建的序列: 列表 元组 字符串 Unicode字符串 buffer对象 xrange对象
序列的通用操作: 索引 分片 加 乘 以及成员资格(in or not in) 还有计算序列的长度,找出最大元素和最小元素
索引:
序列中所有的元素都是有编号的-------从左往右是从0开始递增 ,编号就是索引号
还有负数索引,最后一位(最右一位)的索引为 -1
格式: 序列[索引号] 返回的是的当前索引号对应的序列元素
可以通过变量名去引用一个序列,通过索引值来查看元素,也能直接用字面值去使用索引,以下面的字符串为例:
字面直接使用索引:
In [20]: 'hello'[1]
Out[20]: 'e'
用变量名引用一个序列,再使用索引:
In [21]: a='hello'
In [22]: a[1]
Out[22]: 'e'
分片(切片):
如果说索引是查看但个元素,那么分片操作就是来访问一定范围内的元素.
格式:序列 [ 起始索引号 : 终止索引号 : 步长 ]
切片的范围: [ 起始索引号 , 终止索引号 )
步长:默认为1 步长为2的切片包括的是从开始到结束每隔1的元素
步长可以为负数 步长为 -1 代表将序列倒序输出
起始索引号与终止索引号可以缺省,缺省值分别为0,len(序列)
序列相加:
用加运算符可以进行同类型序列的连接操作
In [24]: [1,2,3,4]+[2,3,4]
Out[24]: [1, 2, 3, 4, 2, 3, 4]
序列的乘法:
序列*整型数字n 会生成一个新的序列 在这个序列中原来的序列会被重复n次
长度,最大值,最小值:
len(序列) 返回序列中所包含元素的数量,即序列的长度
max(序列) 返回序列中最大的元素 比较 ASCII 码的大小
min(序列) 返回序列中最小的元素
成员资格:
元素a in 序列 序列中是否有元素a 如果有,返回 True
not in 与 in 恰好相反
#4.字符串str
python 中的字符串被定义为引号之间的字符集合. 字符串能进行索引与切片.
还有加法 乘法
字符串一旦被创建,元素不可变
#5.元组tuple()与列表list()
元组:()
定义空元组: a = ()
元组元素不可更改
元组只有两个操作 (a 是一个元组):
a.count(元素) ##返回元素在a中重复的次数
a.index(元素) ##返回元素在a中的第一个索引号
列表:[]
定义空列表 a = []
列表可以修改,能执行添加等操作
a.append 在列表末尾追加新的对象
a.extend 可以在列表末尾追加一个序列的多个值
a.insert(位置,元素) 在某个位置(索引号)添加元素
a.remove(元素) 移除元素在列表中第一个匹配值
a.sort 排序
a.count 返回元素在a中重复的次数
a.index 返回元素在a中的第一个索引号
a.pop 移除一个元素(默认最后一个),并返回该元素的值 ,也能以索引号作为参数移除该索引对应的元素
a.reverse 倒序输出
#6. 分支语句
if 判断条件 :
第一个语句
第二个语句
else :
第一个语句
第二个语句
if 判断条件 :
第一个语句
第二个语句
elif 判断条件 :
第一个语句
第二个语句
else
python使用 冒号" : " 跟 缩进 来判断语句块的执行,C语言使用{}
python没有 switch-case 语句,所以大部分分支语句都用 if-else
缩进时最好用空格
#7.集合set()
与数学上的概念一样,集合对象是一组无序排列的可哈希的值
建立方法只有一些工厂方法,没有特别的语法格式
a = set() ##建立空集合
{} ##集合的符号
a = {} ##建立出来的不是空的集合,是空的字典
set() 强制转换为集合
差集 s1 - s2 == s1.difference(s2) s1.difference_update(s2) == s1=s1 - s2
交集 s1 & s2 == s1.intersection(s2)
并集 s1 | s2 == s1.union(s2)
s1.issubset(s2) ##s1是不是s2的子集
s1.issuperset(s2) ##s2是不是s1的超集
s1.isdisjoint(s2) ##判断是否相交
### 脚本
脚本第一行: #!/usr/bin/python 脚本运行环境,用 which python 查看
为增加可移植性(脚本在不同版本python之间运行)
#!/usr/bin/env python 使用当前版本的python运行
第一个脚本(a+b):
cat input.py
************************************
#!/usr/bin/python ##脚本运行环境,用 which python 查看
a = raw_input("please input a=")
b = raw_input("please input b=")
print int(a)+int(b) ##如果用 print int(a+b)之后,先执行字符串的 a+b 再将 a+b 转换为int类型
************************************
关于脚本里编码格式(python默认并不能识别中文):
input.py:
************************************
#!/usr/bin/python
a = int(raw_input("请输入一个数字:"))
************************************
[root@desktop pyjiaoben]# python input.py
File "input.py", line 3
SyntaxError: Non-ASCII character '\xe8' in file input.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
执行时会报错,不识别第三行的中文
可以在脚本开头加下面这一行参数:
#coding=utf-8 ##识别utf-8格式
或者是下面这几行中的任意一行:
#coding:utf-8
#encoding:utf-8
#enoding=utf-8
#-*-coding:utf-8
input.py:
************************************
#!/usr/bin/python
#coding=utf-8
a = int(raw_input("请输入一个数字:"))
************************************
[root@desktop pyjiaoben]# python input.py
请输入一个数字:1
第二个脚本(计算一个月有多少分钟):
-----------------------------------------------------------
#!/usr/bin/python
#coding=utf-8
daysPerMonth = int(raw_input("请输入你要计算的月的天数:"))
hoursPerDay = 24
minutesPerHour = 60
print "本月有",daysPerMonth * hoursPerDay * minutesPerHour,"分钟"
-----------------------------------------------------------
第三个脚本(用户登陆):
-------------------------------------------
#!/usr/bin/python
#coding=utf-8
user = "fentiao"
passwd = "westos"
import getpass
for i in range(1,4) :
userName = raw_input("请输入账户名称:")
passWord = getpass.getpass("请输入密码:")
if userName == user and passWord == passwd :
print("登陆成功!")
break
elif i == 3 :
print("您的3次机会已用完,登录失败")
else :
print("帐号或密码错误,请重新登陆。")
print("您还有%d次登陆机会\n" %(3-i))
-------------------------------------------