Python 基础【一】
python运行流程
一、变量及注释
命名:
合法-变量名由字母、数字和下划线组成,并且不能以数字开头。以下保留字不可以当变量名:
['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']
规范命名:
A大陀峰 单位首字母大写如 MyName B 小陀峰 单词首字母小写,第2个单词以后首字母大写 ,如 myName C下划线分隔法, 如my_name 可以选一种,但避免混用,我的习惯是选择C方法!
在Python中,变量的概念基本上和初中代数的方程变量是一致的。例如,对于方程式 y=x*x
,x
就是变量。当x=2
时,计算结果是4
,当x=5
时,计算结果是25
。
只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。在Python程序中,变量是用一个变量名表示,变量名必须是大小写英文、数字和下划线(_)的组合,且不能用数字开头,比如:
a = 1
b=a
b=5
在Python中,等号=
是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。
理解变量在计算机内存中的表示也非常重要。当我们写:a = 'ABC'
时,Python解释器干了两件事情:
1. 在内存中创建了一个'ABC'
的字符串;
2. 在内存中创建了一个名为a
的变量,并把它指向'ABC'
。
也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码:
a = 'ABC'
b = a
a = 'XYZ'
print b
执行a = 'ABC'
,解释器创建了字符串 'ABC'和变量 a,并把a指向 'ABC':
执行b = a
,解释器创建了变量 b,并把b指向 a 指向的字符串'ABC':
执行a = 'XYZ'
,解释器创建了字符串'XYZ',并把a的指向改为'XYZ',但b并没有更改:
注释:
# 定义开始 多行 如 """ 你好 """
二、用户交互 input
input及2.7以下的raw_input,可以与用户交互,让用户从键盘输入值,可以定义一个变量来接受用户输入的数据,如:
user_name=input("请输入用户名:") # 3.0以上
user_name=raw_input("请输入用户名:") 2.x以下
eval(input)中接收的值是一个变量,必须事先定义,如:
#!/usr/env python
a="gwd"
user_name=eval(input("请输入用户名"))
print(user_name) # 如果此处输入非数字 必须先定义变量,因为eval可以把字符串中的值解析成变量执行!如 a=9 eval('a') 执行结果是9 请输入用户名a
gwd
注:
1.2.x中的input等价于3.x的eval(input)
2.2.0x中的raw_input相当于3.0的input
三、条件判断
计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。
比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,可以用if语句实现:
age = 20
if age >= 18:
print 'your age is', age
print 'gwd'
print 'END'
缩进的代码被视为代码块,上面的3,4行 print 语句就构成一个代码块(但不包括第5行的print)。如果 if 语句判断为 True,就会执行这个代码块。
缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。
注意: if 语句后接表达式,然后用:
表示代码块开始。
如果你在Python交互环境下敲代码,还要特别留意缩进,并且退出缩进需要多敲一行回车:
>>> age = 20
>>> if age >= 18:
... print 'your age is', age
... print 'end'
...
your age is 20
end
python中没有switch..case有。
有的时候,一个 if ... else ... 还不够用。比如,根据年龄的划分:
条件1:18岁或以上:adult
条件2:6岁或以上:teenager
条件3:6岁以下:kid
我们可以用一个 if age >= 18 判断是否符合条件1,如果不符合,再通过一个 if 判断 age >= 6 来判断是否符合条件2,否则,执行条件3:
if age >= 18:
print 'adult'
else:
if age >= 6:
print 'teenager'
else:
print 'kid'
可以用 if ... 多个elif ... else ... 的结构,一次写完所有的规则:
if age >= 18:
print 'adult'
elif age >= 6:
print 'teenager'
elif age >= 3:
print 'kid'
else:
print 'baby'
四、循环控制
Python中的循环语句有 for 和 while。
Python循环语句的控制结构图如下所示:
statements
同样需要注意冒号和缩进。另外,在Python中没有do..while循环。
以下实例使用了 while 来计算 1 到 100 的总和:
#!/usr/bin/env python3 n = 100 sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1 print("Sum of 1 until %d: %d" % (n,sum))
练习:猜数游戏
#!/usr/env python
lucky_num=19
input_num=-1
while lucky_num!=input_num:
input_num=int(input("Input the guess num:"))
if input_num > lucky_num:
print("too small")
elif input_num < lucky_num:
print("too big")
print("bingo")
练习:上题的情况下,要求3次猜不定就锁定
#!/usr/env python
lucky_num = 19
guess_count = 0
while guess_count <3:
input_num=int(input("Input the guess num:"))
if input_num > lucky_num:
print("too small")
elif input_num < lucky_num:
print("too big")
else:
print("bingo")
break
guess_count +=1
else:
print("too many")
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for循环的一般格式如下:
for <variable> in <sequence>:
<statements>
else:
<statements>
for循环实现猜数并3次锁定
#!/usr/env python
lucky_num = 19
for m in range(3):
input_num=int(input("Input the guess num:"))
if input_num > lucky_num:
print("too small")
elif input_num < lucky_num:
print("too big")
else:
print("bingo")
break
else:
print("too many")
break和continue语句及循环中的else子句
break语句可以跳出for和while的循环体。如果你从for或while循环中终止,任何对应的循环else块将不执行。
continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
循环语句可以有else子句;它在穷尽列表(以for循环)或条件变为假(以while循环)循环终止时被执行,但循环被break终止时不执行.如下查寻质数的循环例子:
>>> for n in range(2, 10):
... for x in range(2, n):
... if n % x == 0:
... print(n, 'equals', x, '*', n//x)
... break
... else:
... # 循环中没有找到元素
... print(n, 'is a prime number')
...
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3
Python3 基本数据类型
Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
在Python中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
Python 3中有六个标准的数据类型:
- Numbers(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Sets(集合)
- Dictionaries(字典)
Numbers(数字)
Python 3支持int、float、bool、complex(复数)。
数值类型的赋值和计算都是很直观的,就像大多数语言一样。内置的type()函数可以用来查询变量所指的对象类型。
>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
数值运算:
>>> 5 + 4 # 加法
9
>>> 4.3 - 2 # 减法
2.3
>>> 3 * 7 # 乘法
21
>>> 2 / 4 # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 除法,得到一个整数
0
>>> 17 % 3 # 取余
2
>>> 2 ** 5 # 乘方
32
注意:
- 1、Python可以同时为多个变量赋值,如a, b = 1, 2。
- 2、一个变量可以通过赋值指向不同类型的对象。
- 3、数值的除法(/)总是返回一个浮点数,要获取整数使用//操作符。
- 4、在混合计算时,Python会把整型转换成为浮点数。
String(字符串)
Python中的字符串str用单引号(' ')或双引号(" ")括起来,同时使用反斜杠(\)转义特殊字符。
>>> s = 'Yes,he doesn\'t'
>>> print(s, type(s), len(s))
Yes,he doesn't <class 'str'> 14
如果你不想让反斜杠发生转义,可以在字符串前面添加一个r,表示原始字符串:
>>> print('C:\some\name')
C:\some
ame
>>> print(r'C:\some\name')
C:\some\name
另外,反斜杠可以作为续行符,表示下一行是上一行的延续。还可以使用"""..."""或者'''...'''跨越多行。
字符串可以使用 + 运算符串连接在一起,或者用 * 运算符重复:
>>> print('str'+'ing', 'my'*3)
string mymymy
Python中的字符串有两种索引方式,第一种是从左往右,从0开始依次增加;第二种是从右往左,从-1开始依次减少。
注意,没有单独的字符类型,一个字符就是长度为1的字符串。
>>> word = 'Python'
>>> print(word[0], word[5])
P n
>>> print(word[-1], word[-6])
n P
还可以对字符串进行切片,获取一段子串。用冒号分隔两个索引,形式为变量[头下标:尾下标]。
截取的范围是前闭后开的,并且两个索引都可以省略:
>>> word = 'ilovepython'
>>> word[1:5]
'love'
>>> word[:]
'ilovepython'
>>> word[5:]
'python'
>>> word[-10:-6]
'love'
与C字符串不同的是,Python字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm'会导致错误。
注意:
- 1、反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
- 2、字符串可以用+运算符连接在一起,用*运算符重复。
- 3、Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
- 4、Python中的字符串不能改变。
List(列表)
List(列表) 是 Python 中使用最频繁的数据类型。
列表是写在方括号之间、用逗号分隔开的元素列表。列表中元素的类型可以不相同:
>>> a = ['him', 25, 100, 'her']
>>> print(a)
['him', 25, 100, 'her']
和字符串一样,列表同样可以被索引和切片,列表被切片后返回一个包含所需元素的新列表。详细的在这里就不赘述了。
列表还支持串联操作,使用+操作符:
>>> a = [1, 2, 3, 4, 5]
>>> a + [6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
与Python字符串不一样的是,列表中的元素是可以改变的:
>>> a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9
>>> a[2:5] = [13, 14, 15]
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = [] # 删除
>>> a
[9, 2, 6]
s_list=["xm","30"]
取值
第1个s_list[0] 最后一个 s_list[-1]
enumerate(s_list)
查看列表有什么方法 dir(s_list)或help(s_list)
常用方法:
append 追加
s_list.append("gwd") #会放在列表的最后
index 查看索引
count 统计 s_list.count("gwd")
insert 插入元素 insert(2,"hwj")
pop删除
s_list.pop()
删除最后一个
remove
s_list.remove("xxx")
reverse 反转
sort 按ascii 码排序
3.0不能混排 数据类型要一致
切片
a[0:2] 顾前不顾后
a[:3]取前3
a[-3:]取最后3个
遍历
for i in range(len(s_list))
remove(s_list[i])
extend
s_list.extend(b)
合并列表
range(10)
2.x 生成了一个列表
生成数字序列
if(x in a) 判断包含
元组 Tuple
和列表的功能一样,只是只读的,不能修改和增加,用()定义
s_list=("dd","eee","dsds") 意义是防止修改、
列表和元组的互转 list(元组) tuple(列表)
List内置了有很多方法,例如append()、pop()等等,这在后面会讲到。
注意:
- 1、List写在方括号之间,元素用逗号隔开。
- 2、和字符串一样,list可以被索引和切片。
- 3、List可以使用+操作符进行拼接。
- 4、List中的元素是可以改变的。
Tuple(元组)
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号里,元素之间用逗号隔开。
元组中的元素类型也可以不相同:
>>> a = (1991, 2014, 'physics', 'math')
>>> print(a, type(a), len(a))
(1991, 2014, 'physics', 'math') <class 'tuple'> 4
元组与字符串类似,可以被索引且下标索引从0开始,也可以进行截取/切片(看上面,这里不再赘述)。
其实,可以把字符串看作一种特殊的元组。
>>> tup = (1, 2, 3, 4, 5, 6)
>>> print(tup[0], tup[1:5])
1 (2, 3, 4, 5)
>>> tup[0] = 11 # 修改元组元素的操作是非法的
虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
构造包含0个或1个元素的tuple是个特殊的问题,所以有一些额外的语法规则:
tup1 = () # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号
另外,元组也支持用+操作符:
>>> tup1, tup2 = (1, 2, 3), (4, 5, 6)
>>> print(tup1+tup2)
(1, 2, 3, 4, 5, 6)
string、list和tuple都属于sequence(序列)。
注意:
- 1、与字符串一样,元组的元素不能修改。
- 2、元组也可以被索引和切片,方法一样。
- 3、注意构造包含0或1个元素的元组的特殊语法规则。
- 4、元组也可以使用+操作符进行拼接。
Sets(集合)
集合(set)是一个无序不重复元素的集。
基本功能是进行成员关系测试和消除重复元素。
可以使用大括号 或者 set()函数创建set集合,注意:创建一个空集合必须用 set() 而不是 { },因为{ }是用来创建一个空字典。
>>> student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
>>> print(student) # 重复的元素被自动去掉
{'Jim', 'Jack', 'Mary', 'Tom', 'Rose'}
>>> 'Rose' in student # membership testing(成员测试)
True
>>> # set可以进行集合运算
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a
{'a', 'b', 'c', 'd', 'r'}
>>> a - b # a和b的差集
{'b', 'd', 'r'}
>>> a | b # a和b的并集
{'l', 'm', 'a', 'b', 'c', 'd', 'z', 'r'}
>>> a & b # a和b的交集
{'a', 'c'}
>>> a ^ b # a和b中不同时存在的元素
{'l', 'm', 'b', 'd', 'z', 'r'}
Dictionaries(字典)
字典(dictionary)是Python中另一个非常有用的内置数据类型。
字典是一种映射类型(mapping type),它是一个无序的键 : 值对集合。
关键字必须使用不可变类型,也就是说list和包含可变类型的tuple不能做关键字。
在同一个字典中,关键字还必须互不相同。
>>> dic = {} # 创建空字典
>>> tel = {'Jack':1557, 'Tom':1320, 'Rose':1886}
>>> tel
{'Tom': 1320, 'Jack': 1557, 'Rose': 1886}
>>> tel['Jack'] # 主要的操作:通过key查询
1557
>>> del tel['Rose'] # 删除一个键值对
>>> tel['Mary'] = 4127 # 添加一个键值对
>>> tel
{'Tom': 1320, 'Jack': 1557, 'Mary': 4127}
>>> list(tel.keys()) # 返回所有key组成的list
['Tom', 'Jack', 'Mary']
>>> sorted(tel.keys()) # 按key排序
['Jack', 'Mary', 'Tom']
>>> 'Tom' in tel # 成员测试
True
>>> 'Mary' not in tel # 成员测试
False
构造函数 dict() 直接从键值对sequence中构建字典,当然也可以进行推导,如下:
>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'jack': 4098, 'sape': 4139, 'guido': 4127} >>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36} >>> dict(sape=4139, guido=4127, jack=4098)
{'jack': 4098, 'sape': 4139, 'guido': 4127}
另外,字典类型也有一些内置的函数,例如clear()、keys()、values()等。
注意:
- 1、字典是一种映射类型,它的元素是键值对。
- 2、字典的关键字必须为不可变类型,且不能重复。
- 3、创建空字典使用{ }。
五、文件操作
打开文件
file("路径",“模式”)
open("路径",“模式”)
r 只读
w 只写
a 追加
w+ 读写
read() 一次性
readline 读行
close(关闭)
f=open("a.log","w”)
f.write("ddd\n")
f.close()
覆盖写入
f=open("a.log","r")
print(f.read())
f.close() f=open("a.log",'r')
for line in f:
print(line)
f.close()
w+模式的问题
f=open("a.log","w+")
f.write("ssssss\n")
print(f.read())
Python 基础【一】的更多相关文章
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- Python小白的发展之路之Python基础(一)
Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...
- Python之路3【第一篇】Python基础
本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...
- 进击的Python【第三章】:Python基础(三)
Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...
- 进击的Python【第二章】:Python基础(二)
Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...
- Python之路【第一篇】python基础
一.python开发 1.开发: 1)高级语言:python .Java .PHP. C# Go ruby c++ ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...
- python基础之day1
Python 简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python为我们提供了非常完善的基础代码库,覆盖了 ...
- python基础之文件读写
python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...
- python基础之编码问题
python基础之编码问题 本节内容 字符串编码问题由来 字符串编码解决方案 1.字符串编码问题由来 由于字符串编码是从ascii--->unicode--->utf-8(utf-16和u ...
随机推荐
- Guava 教程(3):Java 的函数式编程,通过 Google Collections 过滤和调用
原文出处: oschina 在本系列博客的第一.二部分,我介绍了非常优秀的Google Collections和Guava包.本篇博客中我们来看看如何使用Google Collections来做到过滤 ...
- Ajax核心--XMLHttpRequest对象
XMLHttpRequest 对象是AJAX功能的核心,学习XMLHttpRequest对象就先从创建XMLHttpRequest 对象开始,了解在不同的浏览器中创建XMLHttpRequest 对象 ...
- 【一天一道LeetCode】#54. Spiral Matrix
一天一道LeetCode系列 (一)题目 Given a matrix of m x n elements (m rows, n columns), return all elements of th ...
- 【一天一道LeetCode】#47. Permutations II
一天一道LeetCode系列 (一)题目 Given a collection of numbers that might contain duplicates, return all possibl ...
- Rust语言之HelloWorld
Rust语言之HelloWorld 参考文档: http://doc.crates.io/guide.html 1 什么是Cargo 相当于maven/ant之于java, automake之于c, ...
- Cocos2d中update与fixedUpdate的区别(三)
没错!现在的情况是很糟糕.因为玩家不会看到平滑的动作. 不管怎样,我们都对此无能为力.玩家期待在1秒后小球出现在位置(8),所以我们应该把球放在那里. 我们不会讨论如何避免掉帧的情况.对于这个例子我们 ...
- spring揭秘 读书笔记 二 BeanFactory的对象注册与依赖绑定
本文是王福强所著<<spring揭秘>>一书的读书笔记 我们前面就说过,Spring的IoC容器时一个IoC Service Provider,而且IoC Service Pr ...
- Android官方技术文档翻译——清单合并
本文译自Android官方技术文档<Manifest Merger>,原文地址:http://tools.android.com/tech-docs/new-build-system/us ...
- saiku运行时报错max_length_for_sort_data 需要set higher
infiniDB或者mysql数据库,运行时,按某个字段排序会出错.报错:max_length_for_sort_data ... set higher. saiku报错, 也是这样. 这是数 ...
- Linux程序分析工具介绍—ldd,nm
原文链接:http://blog.csdn.net/statdm/article/details/7759100 本文要介绍的ldd和nm是linux下,两个用来分析程序很实用的工具.ldd是用来分析 ...