学习Python

Posted 五光十色

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习Python相关的知识,希望对你有一定的参考价值。

一、Python的基础

1、Python是怎样的语言?

 

 

 

 2、Python的安装

Linux安装(python3)

yum install -y make zlib zlib-devel gcc-c++ libtool openssl openssl-devel gcc ncurses-devel libpcap-devel wget bzip2-devel

tar zxvf Python-3.5.2.tgz
cd Python-3.5.2
mkdir -p /usr/local/python/3.5.2/lib
./configure --enable-shared --prefix=/usr/local/python/3.5.2 LDFLAGS="-Wl,-rpath /usr/local/python/3.5.2/lib"
make
make install
ln -fs /usr/local/python/3.5.2/bin/python3.5 /usr/bin/python3

 3、第一个Python程序

#!/usr/bin/env python
  
print "hello,world"

4、Python的变量

变量定义的规则:

变量名只能由数字、字母和下划线组成
不能以数字开头
禁止使用python中的关键字
变量名要具有可描述性
变量名要区分大小写
不能使用中文和拼音
推荐写法:
        驼峰体
        下划线(官方推荐) 
AlexOfOldboy = 89    #这是驼峰体
alex_of_oldboy = 89 #这是下划线

变量的作用:  

可变的量
存储数据
开发最大的忌讳是写重复的代码

5、二进制的介绍

二进制是计算技术中广泛采用的一种数制,二进制由用0和1组成,进位规则是“逢二进一”,借位规则是“借一当二”,计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。

十进制转二进制

256 128 64 32 16 8 4 2 1
1 0 0 0 0 0 0 0 0

6、字符编码

ASCII 

美国标准信息交换代码,是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。

Unicode

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。
Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536

UTF-8

utF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存..

小结

编码3种:ascii(256个,二进制8位长度表示)、unicode(至少二进制16位长度表示)、utf-8(同时可满足ascii和unicode两种表示,减少内存占用)
Python2.7版本默认是ascii码,只持256个,如果需要支持中文等字符,需使用utf-8编码模式,建议在代码的开头加入如下内容。声明编码
# -*- coding:utf-8 -*-

测试

#!/usr/bin/env python
  
print "你好"

7、数据类型

1)数字

int(整型):在64位系统上,整数的位数为64位,取值范围为-2**632**63-1
float(浮点型):浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。

2)布尔值

真或假  True或False
10
print(3 > 2)  # True  成立

3)字符串

特性:不可修改

字符串常用功能

移除空白:strip(),默认为空格或换行符,只能删除开头或是结尾的字符,不能删除中间部分的字符,可以自定义字符,strip(123)。
分割:split(),通过指定分隔符对字符串进行切片,默认所有的空字符,包括空格、换行(\\n)、制表符(\\t)等,默认为 -1, 即分隔所有。##以什么为分隔符,分割几次##
长度:len(),返回对象(字符、列表、元组等)长度或项目个数,
索引:index() ,检测字符串中是否包含子字符串,可指定范围,beg(开始,默认为0)和 end(结束,默认为字符串的长度),如果str不在 string中会报一个异常。
切片:slice(),实现切片对象,包含开始,结束,间距三个参数。

格式化输出

name = "jack"
print "I am %s"  %name
  
#输出: i am jack

PS: %s(字符串),%d(整数),%f(浮点数)

4)列表

创建列表

names = [\'tom\',\'jim\',\'jack\',\'boy\',\'test\',\'key\']

基本操作:

切片:取多个元素(下标从0计数)

names[1:4]     #取下标1到4的值,包括1,不包括4
names[1:-1]    #取下标1到-1的值,不包括-1names[:3]      #取下标0到3的值,0可以忽略
names[3:]      #取下标3到最后的值,最后可以忽略names[3:-1]    #取下标3到-1的值names[::2]     #从下标0开始,每隔2个,取一个值,默认是1

追加

names.append("book")     #追加到最后

插入

names.insert(2,"disk")   #插入到下标2(下标1的后面)

修改

names[2] = "mark"        #修改下标2的值

删除

del names[2]             #删除下标2的值
names.remove("disk")     #删除指定元素
names.pop()              #删除列表最后一个值 

扩展

b = [1,2,3]
names.extend(b)
names
[\'tom\',\'jim\',\'jack\',\'boy\',\'test\',\'key\',1, 2, 3]

拷贝

names_2 = names.copy()
names_2
[\'tom\',\'jim\',\'jack\',\'boy\',\'test\',\'key\'1, 2, 3]

统计

names.count("tom")      #统计tom的次数

排序&翻转

names.sort()            #排序,3.0不同数据类型不能在一起排序
names.reverse()         #反转,倒序

获取下标

names.index("tom")      #只能返回找到的第一个下标
names[names.index("tom")]="com" #查找并替换

8、运算

算数运算:

  比较运算:

 赋值运算:

 逻辑运算:

 成员运算:

身份运算:

位运算:

#128 64 32 16 8 4 2 1 
a = 60  #0 0 1 1 1 1 0 0b = 13  #0 0 0 0 1 1 0 1
#a ^ b =  0 0 1 1 0 0 0 1 = 49 相同的得0,不同的得1
#a & b =  0 0 0 0 1 1 0 0 = 12 上下的值必须均为1
# a | b = 0 0 1 1 1 1 0 1 = 61  上下的值只需有一个为1 

 运算符优先级:

 9、注释

单行注视:用# 
多行注释:""" 被注释内容 """或 \'\'\' 被注释内容 \'\'\'

用户交互

name = input("name:")    #输入模块
age
= input("age:") job = input("job:") info = \'\'\'---info--- #多行用\'\'\'或"""" Name:%s Age: %s Job: %s \'\'\' %(name,age,job) print (info)

10、流程控制

1)If … else…

if:如果条件成立,执行
else:否则执行

场景:用户登陆验证
name = input("请输入你的名字:")
if name == "tom":
print ("登录成功")
else:
print ("登录失败")

 2)If … elif … else …

用户输入3次失败后退出
name = "tom" pwd = 123 for i in range(3): na_me = input("用户名: ") p_wd = int(input("密码:")) if name == na_me and pwd == p_wd: print ("登录成功") break else: print ("登录失败,请重新输入") print ("您还有%d次机会" %(2-i)) else: print ("登录次数超过3次,请稍后重试")

用法:

# 第一种
if 条件:
    pass

# 第二种
if 条件:
    pass     # pass语句用来占为,表示什么都不做
else:
    pass

# 第三种
if 条件1:
    pass
elif 条件2:
    pass
elif 条件3:
    pass
else:
    pass

猜年龄

age = 56

num = int(input("猜猜我今年多大了: ") )
if num == age:
    print("恭喜你,猜对了")
elif num > age:
    print("太大了")
else:
    print("太小了")

作业成绩

score = int(input("score: "))
if score <=100 and score >=0:
    if score >=90 :
        print("A")
    elif  score >=80 :
        print("B")
    elif score >= 70:
        print("C")
    elif score >=60 :
        print("D")
    else:
        print("E")
else:
    print("错误,请输入0-100范围内 ")

3)while循环

# while循环结构
while 判断条件:  # 只有条件不成立时退出循环,如果条件为真,成为一个死循环
    执行语句……

输出1到10

# 循环输出1-10所有整数
num = 1
while num <11:
    print(num)
    num = num +1

猜数字游戏

init_num = 12
num = int(input("Enter:"))
while init_num != num:
    if num >  init_num:
        print("数字过大")
    else:
        print("数字过小")
    num = int(input("Enter:"))

print("猜对了")

break语句

# 输出1-5
num = 1
while num <11:
    print("当前数字是",num)
    if num == 5 :
        break
    num = num +1
    print("现在数字变成了:",num)

break的作用: 结束循环,在死循环中,通过设置一定的条件来结束循环

continue语句

# 输出1-100之间所有奇数
num = 0
while num<100:
    num = num + 1
    if num%2 ==0:
        continue
    print(num)

while循环中的else:

# while循环结构
while 判断条件: 
    执行语句……
else:
    执行语句……

# else:在正常循环结束后,才会执行,如果循环中有break,else不被执行

例子

# 循环没有被中断
num = 0
while num<10:
    num = num + 1
    if num%2 ==0:
        continue
    print(num)
else:
    print("else-----")

### 循环被中断
num = 0
while num<10:
    num = num + 1
    if num%2 ==0:
        break
    print(num)
else:
    print("else-----")

嵌套循环:循环套循环

num1 = 0
while num1 <3:
    print(num1,end="++" )
    num1 += 1
    num2 = 0
    while num2<3:
        print(num2,end="  ")
        num2 +=1
    print()

输入任意2个数,输出#号形状的长方形

x=int(input("x: "))
y=int(input("y: "))

z1 = 0
while z1 < x:
    z2=0
    while z2 < y:
        print("#",end="  ")
        z2+=1
    print()
    z1+=1

三角形

z=int(input("z: "))
x=1
while x<=z:
    y=z
    while y>x-1:
        print("#",end="  ")
        y-=1
    print()
    x+=1
z=int(input("z: "))
x=1
while x<=z:
    y=0
    while y<=x-1:
        print("#",end="  ")
        y+=1
    print()
    x+=1

九九乘法表

x=1
while x<=9:
    y=1
    while y<x+1:
        print("%s*%s=%s"%(y,x,x*y),end="\\t")
        y+=1
    print()
    x+=1

 4)for循环

# for 循环示例
for i in range(10):
    print(i)

输入任意2个数,输出#号形状的长方形

x=int(input("x: "))
y=int(input("y: "))

for i in range(x):
    for w in range(y):
        print("#",end="  ")
    print()

三角形

z=int(input("z: "))

for x in range(z):
    for y in range(x+1):
        print("#",end="  ")
    print()
z=int(input("z: "))

for x in range(z,-1,-1):
    for y in range(x):
        print("#",end="  ")
    print()

九九乘法表

for x in range(1,10):
    for y in range(1,x+1):
        print("%s*%s=%s"%(y,x,x*y),end="\\t")
    print()

标志位

exit_flag = False
for i in range(10):
    if i <5:
        continue
    print(i)
    for j in range(10):
        print("abc",j)
        if j == 6:
            exit_flag = True   #标志位设定为True,跳出内循环
            break
    if exit_flag:              #检测标志位是True,跳出循环
        break

 11、元组

ages = (11, 22, 33, 44, 55)
ages = tuple((11, 22, 33, 44, 55))
元组:只读列表,数据可查询,不能修改,一个是count,一个是index
元组写在小括号(())里,元素之间用逗号隔开

购物车实例

#定义商品列表
alist = [("ipod",3000),("book",500),("mac",2000)]
shopping=[]

#输入工资 gz
= input("请输入你的工资:") if gz.isdigit(): gz = int(gz) while True:
#打印商品内容
for i,v in enumerate(alist): print(i,v) #用户选择商品 bh = input("请输入要买的编号/退出q: ")
#验证输入是否合法
if bh.isdigit(): bh = int(bh) if bh >= 0 and bh < len(alist): #定义用户选择商品列表 itm = alist[bh]
#如果钱够,用本金减去该商品价格,并将该商品加入购物车
if gz > itm[1]: gz-=itm[1] shopping.append(itm[0]) #如果钱不够,打印还差多少钱? else: print("你的余额不足,还差%s" %(itm[1]-gz)) #防止输错 else: print("编号不存在,请你重新输入")
#用户退出,打印购买的商品和数量及余额 elif bh
== "q": for i in shopping: pass print("购买的商品是%s,余额是%s"%(i,gz),"数量: %s"%shopping.count(i)) break
#防止工资输错
else: print("你输入的是非法数字,请重新输入")

12、字典

 字典一种key - value 的数据类型,无序存储的,key必须是唯一的,不可变类型,如:数字、字符串、元组

字典两大特点:无序,键唯一

 创建字典:

dic1 = {\'name\':"tom",\'age\':26}
dic = {
  \'name\':"tom",
  \'age\':26,
}
dic2
= dict(((\'name\',"tom"),(\'age\',26),))

增加

dic3={}
dic3[\'name\']=\'alex\'
dic3[\'age\']=18

a=dic3.setdefault(\'name\',\'yuan\')
b=dic3.setdefault(\'ages\',22)
键存在,不改动,返回字典中键对应的值
键不存在,在字典中增加新的键值对,并返回相应的值

删除

dic4={\'name\': \'tom\', \'age\': 18,\'class\':1}
 
清空字典
# dic4.clear()
删除字典中指定键值对 del dic4[
\'name\']
随机删除某组键值对,并以元组方式返回值 a
=dic4.popitem()
删除字典中指定键值对,并返回该键值对的值 # print(dic4.pop(
\'age\')) 删除整个字典 # del dic4

修改

dic5={\'name\': \'tom\', \'age\': 18}
dic5[\'name\']=\'jack\'
dic6={\'sex\':\'male\',\'hobby\':\'girl\'} dic5.update(dic6)

查找

dic7={\'name\': \'tom\', \'age\': 18}
 
若key存在,返回值,不存在,就报错
print(dic7[\'name\'])

若key存在,返回值,不存在,返回None
print(dic7.get(\'age\'))

若key存在,返回值,不存在,返回False
print("ages" in dic7)

print(dic7.items())         #key和values
print(dic7.keys())          #key  
print(dic7.values())        #values
print(list(dic7.values()))  #列表存储value 

 字典的嵌套

cn = {
    "北京":{
        "朝阳": ["国贸","望京"],
        "海淀": ["中关村","圆明园"],
        "丰台": ["丰台科技园","北京西站"],
        "通州":["传媒大学","双桥"]
    },
    "上海":{
        "浦东区":["迪士尼乐园","科技大学"]
    },
    "广东":{
        "天河区":["花城广场","国际金融中心"]
    }
}

cn["北京"]["朝阳"][1] += ",国展"
print(cn["北京"]["朝阳"])
#输出 
[\'国贸\', \'望京,国展\']

字典的遍历

dic8={\'name\': \'tom\', \'age\': 28}
 
for i in dic8:
    print(i,dic8[i])
 
for items in dic8.items():
    print(items)
for keys,values in dic8.items(): print(keys,values)

其他操作

##dict.fromkeys##少用,有坑

d1=dict.fromkeys([\'host1\',\'host2\',\'host3\'],\'Mac\') print(d1) d1[\'host1\']=\'xiaomi以上是关于学习Python的主要内容,如果未能解决你的问题,请参考以下文章

Python学习总结

学习 PyQt5。在我的代码片段中找不到错误 [关闭]

python 学习python语法的片段

python小白学习记录 多线程爬取ts片段

python ipython:机器学习片段

30 段 Python 实用代码