python基础笔记1

一、python是什么?

Python是一种计算机程序设计语言。你可能已经据说过不少种流行的编程语言,好比很是难学的C语言,很是流行的Java语言html

二、python能用来作什么

平常任务,好比自动备份;能够用来作网站;云计算最火的语言;运维人员必备语言等等等python

三、python的版本

python目前有两个版本,一个是python2.x  一个是python3.xexpress

关于python两个版本区别此处描写的更加详细编程

http://www.cnblogs.com/codingmylife/archive/2010/06/06/1752807.htmlpython3.x

四、第一个python程序

1 print('hello world!')

五、python的变量

变量定义的规则:app

    • 变量名只能是 字母、数字或下划线的任意组合
    • 变量名的第一个字符不能是数字
    • 如下关键字不能声明为变量名 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

变量的赋值运维

name = 'ly'dom

六、python的输入和输出

print()在括号中加上字符串,就能够向屏幕上输出指定的文字。好比输出'hello, world'编程语言

Python提供了一个input(),可让用户输入字符串,并存放到一个变量里。好比输入用户的名字:ide

>>> name=input('please input your name:')
please input your name:ly
>>> name
'ly'
name

 input()的输入的类型默认都是字符串

>>> num=input(':')
:1
>>> type(num)
<class 'str'>

格式化输出字符串可使用%格式化输出,例如

name = input('name:')
age = int(input('age:'))
score = float(input('score:'))
info = ('''
-------------info  %s -------------
name:%s
age:%d
score:%.2f
-----------------------------------
''') % (name,name,age,score)
View Code

%s  字符串 %d 10进制整数 %f  浮点型(取两位%.2f) 

有的时候字符串里面的%是一个普通字符,就须要转义使用%%来表示%

格式化输出还可使用.format方式

 1 info1 = ('''
 2 -------------info1 {name}------------
 3 name:{name}
 4 age:{age:d}
 5 score:{score:.2f}
 6 -------------------------------------
 7 ''').format(name=name,age=age,score=score)
 8 print('format的一种输出方式',info1)
 9 info2 = ('''
10 -------------info2 {0}-------------
11 name:{0}
12 age:{1:d}
13 score:{2:.2f}
14 -----------------------------------
15 ''').format(name,age,score)
16 print('format的另外一种输出方式',info2)
View Code

{}默认字符串{:d}整数型{:f}浮点型(取2位{:.2f})

七、python的数据类型

可使用内部函数type()来查看数据的类型

7.1 字符串(str)

用单引号‘’或双引号“”括起来的任意文本,字符串中包含转义字符\,制表符\t,换行符\n

转义字符\的使用方法,好比咱们要输出一个\

>>> print('\\')
\

 打印D:\test的文件路径也须要使用转义

>>> print('D:\\test')
D:\test

 若是字符串中有许多字符都须要转义的话,就须要加不少的\,为了简化python提供一种很是简便的方式r' ',例如若是咱们要打印D:\test\test.txt时,能够这么写

>>> print(r'D:\test\test.txt')
D:\test\test.txt

若是字符串中有不少换行,写在一行使用使用\n很差阅读,为了简化python提供'''...'''的格式表示多行内容

>>> print('''line1)
... line2
... line3''')
line1)
line2
line3

7.2布尔型(bool)

布尔型表示判断只有True和Flase两种值,布尔值可使用and、or、not计算

7.3整数型(int)

任意大小的整数,包含负整数

7.4浮点型(float)

小数

7.5列表(list)

一种有序的集合,使用[ ]定义能够随时添加和删除其中的元素,好比建立0-9的整数集合

>>> num=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 >>> num
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

能够经过索引来访问list中的每一个元素,索引默认从0开始,好比定义一个班级的列表

 1 >>> classmates=['张三','李四','王五','赵六']
 2 >>> classmates
 3 ['张三', '李四', '王五', '赵六']
 4 >>> classmates[0]
 5 '张三'
 6 #添加一个王二麻子
 7 >>> classmates.append('王二麻子')
 8 >>> classmates
 9 ['张三', '李四', '王五', '赵六', '王二麻子']
10 #删除王五,使用remove,默认删除第一个
11 >>> classmates.remove('王五')
12 >>> classmates
13 ['张三', '李四', '赵六', '王二麻子']
14 #查看每一个元素对应的索引号可使用enumerate
15 >>> for obj,value in enumerate(classmates):
16 ...     print(obj,'--',value)
17 ...
18 0 -- 张三
19 1 -- 李四
20 2 -- 赵六
21 3 -- 王二麻子
22 #删除张三,使用pop方法,默认删除最后一个元素
23 >>> classmates.pop(0)
24 '张三'
25 >>> classmates
26 ['李四', '赵六', '王二麻子']
classmates

要把某个元素替换成别的元素,能够直接赋值给对应的索引位置

>>> classmates
['李四', '赵六', '王二麻子']
>>> classmates[2] = '周二'
>>> classmates
['李四', '赵六', '周二']

list中全部元素也能够是不一样的数据类型例如:

>>> list = ['apple',1,True]
>>> list
['apple', 1, True]

 list元素也能够是另外一个list

>>> list1 = ['red','blue',list]
>>> list1
['red', 'blue', ['apple', 1, True]]

python中列表的操做函数跟方法

len(list)    列表元素的个数

max(list)   返回列表元素的最大值

min(list)   返回列表元素的最小值

list()         修改其余的数据类型为list类型(不是全部数据类型均可转换)

列表操做方法

list.append(obj)   在列表末尾添加新元素

list.count(obj)    统计某个元素在列表中出现的次数

list.extend()    追加,在列表末尾添加一个列表

list.index(obj)   从列表中找出某个元素对应的索引号

list.insert(index,obj) 将某个元素插入列表指定的索引位置

list.pop(index)         删除列表中某个索引对应的元素,不写默认删除最后一位

list.remove(obj)       删除列表中某个元素,不写默认删除第一位

list.reverse()            反向列表中元素

>>> a
[0, 1, 2, 4, 5, 6, 7, 8]
>>> a.reverse()
>>> a
[8, 7, 6, 5, 4, 2, 1, 0]

list.sort()     对列表中元素进行排序

>>> a
[8, 7, 6, 5, 4, 2, 1, 0]
>>> a.sort()
>>> a
[0, 1, 2, 4, 5, 6, 7, 8]

7.6元组(tuple)
另外一种有序的列表叫元组,元组跟列表很是类似,可是元组一旦初始化就不能修改,使用()定义,元组一样能够操做

若是元组中只有一个元素须要在元素后面添加,(逗号)

>>> b=('a')
>>> b
'a'
>>> type(b)
<class 'str'>
>>> b=('a',)
>>> type(b)
<class 'tuple'>

 7.7字典(dict)

 python内置了字典dict的支持,使用  键---值(key---value)的方式存储,具备极快的查找速度

定义方法使用{}定义

>>> d = {'张三':90,'李四':58,'王五':65}
>>> d
{'张三': 90, '李四': 58, '王五': 65}
>>> d['李四']
58
>>>

 根据key值直接拿到value,把数据放入dict的方法,除了初始化时指定以外,还能够经过key放入

>>> d['周二']=100
>>> d
{'张三': 90, '李四': 58, '王五': 65, '周二': 100}

 若是屡次对一个key放入value,后面的值会把前面的冲掉,若是key不存在,dict就会报错

>>> d['金三胖']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: '金三胖'

 要避免key不存在的错误,有两种方法,一种是in方法

>>> '金三胖' in d
False
>>> '周二' in d
True

 一种是经过dict提供的get方法,若是key不存在,能够返回None或自定义value

>>> d.get('金三胖')
>>> d.get('金三胖',0)
0

 要删除使用dict.pop(key)方法,对应的value也会从dict中删除,注意dict内部存放的顺序跟key放入的顺序是没有关系的

>>> d
{'张三': 90, '李四': 58, '王五': 65, '周二': 100}
>>> d.pop('王五')
65
>>> d
{'张三': 90, '李四': 58, '周二': 100}

和list相比dict有如下几个特色
a.查找和插入的速度极快,不会随着key的增长而变慢

b.须要占用大量的内存,内存浪费多

而list正好相反,因此dict是一种用空间换取时间的方法,须要牢记的是dict中key必须是不可变对象,list就不能做为key,而字符串、整数、元组均可以做为key

7.8 set

set和dict类型,也是一组key的集合,可是不存储value,因为key不能重复,因此,在set中没有重复的key

要建立一个set须要提供一个list做为输入集合

>>> s = set([1,2,'a','b',2])
>>> s
{'b', 1, 2, 'a'}

 注意,传入的参数是一个list,而显示的{  }只是告诉你这个set内部有这几种元素,显示的顺序也不表示set是有序的,而且重复元素会自动过滤

能够经过add(key)添加元素到set,能够重复添加,不会有效果,经过remove(key)删除元素

>>> s.add(3)
>>> s.add(3)
>>> s
{1, 2, 'a', 3, 'b'}
>>> s.remove('b')
>>> s
{1, 2, 'a', 3}

 set能够看出是数学意义上无序和无重复的元素的集合,所以两个set能够作数学意义上的交集、并集等操做

>>> s1
{1, 2, 3}
>>> s2
{2, 3, 4}
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}

 set和dict的惟一区别仅在于没有存储对应的value,可是set和dict同样,一样不可放入可变对象

7.9 空值(None) 

空值是python中一个特殊的值,用None表示,None不能理解为0,由于0是有意义的,而None是一个特殊的空值。

八、运算符

8.1 算数运算

+ 加法 - 减法 * 乘法 / 除(使用/除时,结果为float类型) //地板除(结果为整数int) % 取余数  ** 次幂(2**2 表示2的2次幂结果4)

8.2 比较运算,输出结果为bool

== 等于   != 不等于(python3.0以后不能够写做<>) > 大于 <  小于  >=  大于等于  <=小于等于

8.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

除此以外还有**=  //=

8.4逻辑运算符

and  布尔与  二者都是True才是True,不然为False

or    布尔或  二者都是False才是False,不然为True

not  布尔非  非True就是False,非False就是True

8.5成员运算

in      若是在指定的序列找到值,则返回True,不然为False

not in     若是在指定的序列中没有找到值,返回True,不然为False

8.6身份运算

is      is是判断两个标识符是否是引用一个对象

is not     is not 是判断两个标识符是否是引用不一样对象

8.7强制类型转换符

不一样数据类型之间能够进行转换

>>> a = '1'
>>> type(a)
<class 'str'>
>>> int(a)
1
>>> b = int(a)
>>> type(b)
<class 'int'>

 

 8.8 python中不一样对象进行比较须要使用operator模块

须要引入 operator 模块,适合任何对象,包含的方法有:

import operator

operator.lt(a, b)  a小于b? operator.le(a, b)  a小于等于b? operator.eq(a, b)  a等于b? operator.ne(a, b)  a不等于b? operator.ge(a, b)  a大于等于b? operator.gt(a, b)  a大于b
Python 运算符优先级
运算符 描述
lambda Lambda表达式
or 布尔“或”
and 布尔“与”
not x 布尔“非”
in,not in 成员测试
is,is not 同一性测试
<,<=,>,>=,!=,== 比较
| 按位或
^ 按位异或
& 按位与
<<,>> 移位
+,- 加法与减法
*,/,% 乘法、除法与取余
+x,-x 正负号
~x 按位翻转
** 指数
x.attribute 属性参考
x[index] 下标
x[index:index] 寻址段
f(arguments...) 函数调用
(experession,...) 绑定或元组显示
[expression,...] 列表显示
{key:datum,...} 字典显示
'expression,...' 字符串转换

 九、判断语句和循环语句

python的语法比较简单,采用缩进方式;已#开头表示注释,批量注释使用'''。。。''',其余每一行都是一个语句,当语句已冒号:结尾时,缩进的语句视为代码块。按照约定俗成,缩进应始终坚持使用4个空格(不要tab键和空格混用,python是区分大小写的)。

9.1判断语句

简单的if判断语句为

if   条件:#条件为True

     执行结果

else:  #不然

     执行结果

if中还可使用elif作更细致的判断,elif 是else if的缩写,if语句是从上往下判断,若是某个判断上是True,就会执行相应的结果,执行完毕后会忽略掉接下来的elif和else

9.2循环语句for

for...in....语句能够循环遍历list或tuple,又称做迭代,例:

names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)
#执行这段代码,会依次打印names的每个元素:
Michael
Bob
Tracy

若是要计算从1到100的数之和,咱们可使用for循环实现

sum=0
#range()函数能够生成一个整数序列,range(1,101)表明从1开始取到100,至关于
#[1,2,3,4,5.....100]的一个列表
for i in range(1,101):
    sum = sum + i
print(sum)

9.3循环语句while

while循环是,只要条件知足,就不断循环,条件不知足时退出。例:

打印1到10的整数

>>> i=0
>>> while i <10:
...     i = i + 1
...     print(i)
...
1
2
3
4
5
6
7
8
9
10

在循环中,可使用break和continue,须要配合if语句来使用,break是退出循环,continue是跳过当前循环

一个经典的猜数字的游戏

 1 #!/usr/bin/env python3
 2 #-*- coding: utf-8 -*-
 3 #经典猜数字游戏
 4 import random
 5 #取一个随机数(0-9)
 6 num = random.randint(0,9)
 7 #用户输入一个数字
 8 #给3次机会判断输入的数字跟获取的随机数是否相等,并给出提示,超过次数提示机会已用尽
 9 for i in range(3):
10     #用户输入一个数字
11     num_of_user = int(input('请输入一个0-9的数字:'))
12     #首先判断输入的数值是否0-9之间
13     while True:
14         if num_of_user in range(10):
15             break
16         else:
17             print('输入的数值超过0-9区间范围!,请从新输入')
18             num_of_user = int(input(''))
19     if num_of_user == num:
20         print('恭喜你猜对了!')
21         break
22     elif num_of_user > num:
23         print('你猜想的数字过大!')
24     else:
25         print('你猜想的数字小了!')
26     
27 else:
28     print('你的机会已用尽,对不起,你输了!')    
View Code

一个交互式的猜数字游戏

#!/usr/bin/env python3
#-*- coding: utf-8 -*-
#经典猜数字游戏
import random
#取一个随机数(0-9)
num = random.randint(0,9)
#建立一个计数器
count = 0
while count<3:
    #用户输入一个数字
    num_of_user = int(input('请输入一个0-9的数字:'))
    #计数器循环+1
    count += 1
    #首先判断输入的数值是否0-9之间
    while True:
        if num_of_user in range(10):
            break
        else:
            print('输入的数值超过0-9区间范围!,请从新输入')
            num_of_user = int(input(''))
    if num_of_user == num:
        print('恭喜你猜对了!')
        break
    elif num_of_user > num:
        print('你猜想的数字过大!')
    else:
        print('你猜想的数字小了!!')
    if count == 3:
        print('三次机会已用尽,请问你还想继续玩吗Y/N?')
        play_flag = input('')
        if play_flag == 'Y':
            count = 0
        elif play_flag == 'N':
            print('游戏结束。')
        else:
            print('输入的命令有误,游戏结束。')
View Code
相关文章
相关标签/搜索