python基础巩固(变量类型:字典、集合、元组、列表、数字、字符串)

Python 3 教程 菜鸟教程

https://www.runoob.com/python3/python3-tutorial.html

 

在控制台DOS运行.py文件

  1. 先切换到.py文件所在目录
  2. 再输入python hello.py (输入python3 hello.py执行会报错,这里与菜鸟教程不同

Unix & Linux 平台安装 Python3

  1. 先下载Unix/Linux的源码压缩包 https://www.python.org/downloads/source/
  2. 解压压缩包,并安装

# tar -zxvf Python-3.7.7.tgz    说明:这是解压文件

# cd Python-3.7.7

# ./configure

# make && make install  说明:make是编译,make insatll 来进行安装

Linux设置环境变量

bash shell输入:export PATH=”$PATH:/usr/local/bin/python”

说明: /usr/local/bin/python 是 Python 的安装目录。

Shell 既是一种脚本编程语言,也是一个连接内核和用户的软件。

常见的 Shell 有 sh(sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有sh)、

csh(有点类似C语言,所以才得名为 C shell ,简称为 csh)、

tcsh(tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持)、

ash(一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容)、

bash(bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的shell)

 

Window 平台安装 Python3

打开 WEB 浏览器访问 https://www.python.org/downloads/windows/ ,一般就下载 executable installer,x86 表示是 32 位机子的,x86-64 表示 64 位机子的。

集成开发环境PyCharm社区版,免费

PyCharm 是由 JetBrains 打造的一款 Python IDE,支持 macOS、 Windows、 Linux 系统。

PyCharm 功能 : 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制……

PyCharm 下载地址 : https://www.jetbrains.com/pycharm/download/

PyCharm 安装地址:http://www.runoob.com/w3cnote/pycharm-windows-install.html

 

 

 

 

Python3 基础语法

编码:默认情况下,python3源码文件以UTF-8编码,所有字符都是unicode字符串,当然也可以指定编码:# -*- coding:cp-1252 -*-

标识符:对大小写敏感

第一个字符必须是以字母或下划线_

标识符的其他部分由:字母、数字和下划线组成

说明:在python3中,可以用中文作为变量名,非ASCII标识符也可以作为变量。

python保留字(即关键字)

这些关键字不能把他们用作标识符名称,Python的标准库提供了一个keyword模块,可以输出当前版本的所有关键字:

 

 

多行语句:

如果语句很长,我们可以使用反斜杠(\)来实现多行语句

 

也可以使用’’’...’’’跨越多行

print('''这是多行记录
第二行
第三行
''')
tem=1+\
    2
print(tem)

#运行结果如下===========

这是多行记录

第二行

第三行

 

3

 

 

在列表[]、字典{}、元组()的多行语句,不需要使用反斜杠(\),但结束符必须最后再加,例如:

 

 

 

空行

函数之间或类的方法之间用空行分隔,作用在于分隔两段不同功能或含义的代码,代码结构清晰。

Print输出

Print默认输出是换行的,要实现不换行需要在末尾加上end=''

##print默认输出是换行的,要实现不换行需要在末尾加上end=''

print('**************')
print(str)
print(yname)
print('**************')
print(str,end=' ')
print(yname,end=' **')
print('结束')

运行结果:

**************

Bueowei

wewlaoe

**************

Bueowei wewlaoe **结束

 

import 与 from……import

#import from……import
'''
将整个模块导入:import 模块名
从某个模块中导入某个函数:from 模块名 import 函数1
从某个模块中导入多个函数:from 模块名 import 函数1,函数2,函数3
从某个模块中导入全部函数:from 模块名 import *
'''
import sys
print('python 路径为:',sys.path)

from sys import path
print('python 路径为:',path)
#因为已经导入path成员,所以此处引用时不需要加sys.path

 

变量

python中的变量不需要声明,但每个变量在使用前必须赋值(因赋值以后该变量才会被创建)

变量就是变量,它没有类型,这里所说的‘类型’是变量所指的内存中对象的类型。

多个变量赋值:

python允许同时为多个变量赋值,从后向前赋值:

a,b,c=1,2,'wrotuw'
print(a,b,c)    #运行结果:1 2 wrotuw

 

print('==========')
a,b,c=1,2
print(a,b,c)    #运行结果:ValueError: not enough values to unpack (expected 3, got 2)

可以用del语句删除一些对象引用:

a,b,c,d=20,5.5,True,4+3j
del a
del b,c
print(a,b,c,d)      #运行结果 NameError: name 'a' is not defined

Python3中有六个标准的数据类型:

数字12 字符串’we’、 列表[1,3] 元组(a,b)、字典{‘name’:’Ben’} 集合{a,3,’Lily’}

不可变数据(3个):数字、字符串、元组

可变数据(3个):列表、字典、集合

比如:Python字符串不能被改变,向一个索引位置赋值,比如word[0]=’m’会导致报错。

TypeError: 'str' object does not support item assignment  str类型不支持给他的项赋值

 

但一个变量可以通过赋值指向不同类型的对象。

内置函数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'>

 

字符串:

1.用单引号’word’ 或双引号”一个句子”  或三引号’’’ 一个段落‘’’

2.反斜杠’\’可以用来转义,使用r可以让反斜杠不发生转义 (r:raw string 未加工的)

3.字符串用+运算符连接在一起,用*运算符重复

4.python的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。

字符串的截取格式:变量[头下标:尾下标:步长]

  1. Python中的字符串不能改变。

 

 

 

实例:

#!/usr/bin/python3

str='Bueowei'

print(str)                                #    ==Bueowei
print('字符串的长度:',len(str))           # ==7
print(str[2])       #输入第3个字符                 ==e
print(str[2:5])    #输出第3个到第5个的所有字符      ==eow 等同于str[2] str[3] str[4]
print(str[2:])      #输出从第3个字符到最后一个字符   ==eowei
print(str[0:-1])   #输出第一个到倒数第二个的所有字符  ==Bueowe
print(str[:-2])     #输出从第1个字符到倒数第三个字符    ==Bueow

数据类型转换 str(x) 将对象x转换为字符串

 

Number 数字:

整数int(且表示为长整型)、浮点数float、复数complex 1+2j、布尔bool

数值运算

print(5+4)      #9  
print(4.3-2)    #2.3 在混合类型计算中,python会把整型转换为浮点数
print(3*7)      #21    
print(2/4)      #0.5    除,得到一个浮点数
print(2//4)     #0     除,只保留整数部分,得到的并不一定是整数类型的值,与参与运算的数据类型有关: 7//2.0 ==3.0

print(17%3)     #2      求余数(3*5+2
print(3**2)     #9      乘方

 

print('======Number的一些函数===========')
import math
print(abs(-3))                  #取绝对值  3
print(math.fabs(-10))           #取绝对值,返回的浮点数  10.0
print(math.floor(4.9))          #返回的下舍整数  4
print(round(10.5623,1))        #返回浮点数的四舍五入值,1代表舍入到小数后的位数  10.6
print(max(5,6,3,32,654))        #参数可以为序列    654
print(min(5,6,3,32,654))        #参数可以为序列    3
print(pow(3,2))                 #x**y 幂运算,3**2=9
print('======随机函数===========')
import random
# r=random()    #随机生成一个(0,1)范围内的实数  TypeError: 'module' object is not callable
print(random.choice(range(10)))       #从0到9中随机挑选一个整数
print(random.uniform(3,30))         #随机生成一个[x,y]范围内的实数

print('======数学常量===========')
print(math.pi)  #3.141592653589793
print(math.e)   #2.718281828459045

 

数据类型转换 int(x) 将对象x转换为整数 ;float(x) 将对象float转换为一个浮点数

 

List列表

列表中元素的类型可以不相同,可以是数字、字符串,甚至可以嵌套列表

和字符串一样,可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

mlist=[567,'qbd',2.23,'runbo',['s',57]]
tinylist=[123,'weor']

print(mlist)
print(mlist[:])           #和第一个写法效果一样
print(mlist[0])           #567
print(mlist[1:3])         #'qbd' 2.23
print(mlist[2:])         #2.23,'runbo',['s',57]
print(tinylist*3)       #[123, 'weor', 123, 'weor', 123, 'weor']
print(mlist+tinylist)   #[567, 'qbd', 2.23, 'runbo', ['s', 57], 123, 'weor']

python字符串不一样的是,列表中的元素可以改变

mlist=[567,'qbd',2.23,'runbo',['s',57]]
mlist[0]='89'
print(mlist)        #['89', 'qbd', 2.23, 'runbo', ['s', 57]]

截取可以接收第三个参数:截取的步长,若步长为负数,表示逆向读取(可以用于翻转字符串、列表)

mlist=[567,'qbd',2.23,'runbo',['s',57]]
mlist[0]='89'
print(mlist)            #['89', 'qbd', 2.23, 'runbo', ['s', 57]]
print(mlist[1:4:2])     #['qbd', 'runbo']
print(mlist[-1::-2])     #[['s', 57], 2.23, '89'] 翻转列表

 

yname='wewlaoe'
print(yname[-1])    #e
print(yname[-1::-1])    #eoalwew  翻转字符串

数据类型转换 list(s) 将序列s转换为一个列表

 

Tuple(元组)

与字符串类似,可以被索引、截取,进行连接+   重复* 操作

print('======元组=======')
tuple=('adcd',323,3.5,'w394')
tinytuple=(134,'ruor')

print(tuple)
print(tuple[0])
print(tuple[1:3])
print(tinytuple*2)
print(tuple+tinytuple)

 

虽然tuple的元素不可改变,但它可以包含可变的对象,比如list

mtuple=('adcd',323,3.5,'w394',[23,'age'])
mtuple[0]='old'     #TypeError: 'tuple' object does not support item assignment

 

mtuple[-1][0]='heigh'
print(mtuple)       #('adcd', 323, 3.5, 'w394', ['heigh', 'age'])

 

构造包含0个或1个元素的元组比较特殊如下:

tup1=()     #空元组
tup2=(3,)   #一个元素,需要在元素后添加逗号

虽然元组中的元素不能改变,不允许删除,但可以使用del语句来删除这个元组:del tup2

 

数据类型转换 tuple(s) 将序列s转换为一个元组

 

String字符串、list列表、tuple元组都属于sequence序列:

  1. 可以被索引m[n]
  2. 可以被截取m[a:b]( 当b未被省略时,截取的规则为“前闭后开”,是不包含m[b]的)

可以按步长截取m[a:b:e](步长为负数时,可以翻转序列)

  1. 也可以使用+ *操作符

 

Set集合

集合基本功能是进行成员关系测试和删除重复元素

可以使用大括号{} 或者set()函数创建集合,注意创建一个空集合必须用set(),而不是{},因为空的{}是用来创建一个空字典。

集合是无序的,不支持被索引、截取,且当有重复元素时只保留其中一个。

print('=========集合的运算==========')
#成员测试
student={'Daives','ShanSan','Anliy','Tom','Sam','Llly' #创建集合方式1
if 'Rose' in student:
    print('Rose 在集合中')
else:
    print('Rose 不在集合')

if 'Daives' in student:
    print('Daives 在集合中')
else:
    print('Rose 不在集合')

 

#set可以进行集合运算

a=set('sejdkeldkkf')    #创建集合方式2  ,且set只能带一个参数
print(a)            #运行结果  {'k', 'e', 'j', 'l', 's', 'd', 'f'}

print(a[0])         #运行结果   TypeError: 'set' object does not support indexing 集合不支持索引

 

#集合:差集、并集、交集、求差异集
print(a-b)  #运行结果{'k', 'l', 'f', 's'}       a  b的差集 (只在a中而不在b中的元素组成的集合
print(b-a)  #运行结果{'y'}                      a  b的差集 (以b为目标,筛出b中独有的,a中没有的项)
print(a|b)  #运行结果{'l', 'e', 'k', 'y', 'd', 's', 'f', 'j'}       a  b的并集
print(a&b)  #运行结果   {'d', 'e', 'j'}         a  b 的交集
print(a ^ b)    #运行结果       {'f', 'k', 'y', 's', 'l'}       a  b 中不同时存在的元素

数据类型转换 set(s) 将序列s转换为一个可变集合(a.add(5)  a.update(6,7,8)

数据类型转换 frozenset(s) 将序列s转换为一个不可变集合,与tuple的区别在于无序,元素不可重复,且元素只能是不可变类型。

Dictionary  字典

字典是无序的对象集合,不能通过索引下标访问,而是通过键值来存、取的。

字典就是一种映射类型:键(key):(value),且键(key)必须使用不可变类型(字符串、数字、元组),键(key)在该字典中是唯一的。

print('======字典=====')
dict={}
dict['age']=89
dict['name']='Daysan'
dict[3]='333'
dict[(3.2,5)]='dwie'
print(dict.keys())      #运行结果   dict_keys(['age', 'name', 3, (3.2, 5)])
print(dict[0])      #运行结果   KeyError: 0,不是按0索引的,而被视为键值0

 

tinydict={'site':'cdds.369.cn','name':'不停学','site':'utf-8'} #重复的键,相当于修改了对应的值
print(tinydict)     #输出完整的字典        运行结果:{'site': 'utf-8', 'name': '不停学'}

 

print(tinydict.keys())    #输出所有键   运行结果:(['site', 'name'])     返回的类型:<class 'dict_keys'>
print(tinydict.values())    # #输出所有值   运行结果:dict_values(['utf-8', '不停学'])     返回的类型:<class 'dict_values'>

创建字典的几个方式:

Dict1={}
Dict1['age']=89                  #先定义,后面使用时赋值
Dict2={'site':'cdds.369.cn'}    #定义同时赋值
dict([('Runonb',1),('Google',3)])     #只能在交互式环境使用吗? 使用类型转换函数dict(),直接从键值对序列中构建字典。

 

数据类型转换 dict(d) 创建一个字典。d 必须是一个 (key, value)元组序列。

 

 

 

 

=====================================

Ctrl + / 注释(或取消注释),也可多行注释

Shift + F10    运行

Shift + F9    调试
快速查看文档:Ctrl + Q
进入列编辑模式:alt+鼠标
选中单词:ctrl+w
搜索:ctrl+f
全局搜索:ctrl+shift+f

 

 

posted @ 2020-03-20 11:52  幸福在今天  阅读(544)  评论(0编辑  收藏  举报