numpy学习

本文介绍了Python编程的基础知识,包括数据类型的使用,如整数、浮点数、字符串、布尔值和列表、元组、字典、集合的特性与操作。讲解了如何进行输入输出、条件判断、循环控制以及函数调用。此外,还涉及到了matplotlib库的图形绘制,包括线图、堆叠图、饼图和3D图形的创建,展示了Python在数据可视化方面的应用。
摘要由CSDN通过智能技术生成

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

name=input()

当你输入name = input() 并按下回车后,Python交互式命令行就在等待你的输入了。
这时,你可以输入任意字符,然后按回车后完成输入。
输入完成后,不会有任何提示,Python交互式命令行又回到>>> 状态了。
那刚才输入的内容到哪去了?答案是存放到name 变量里了。可以直接输入name 查看变量内容:

name

要打印出name 变量的内容,除了直接写name 然后按回车外,还可以用print() 函数:

   print(name)

有了输入和输出,我们就可以把上次打印’hello, world’ 的程序改成有点意义的程序了:

Python是一种计算机编程语言。Python程序是大小写敏感的任何一种编程语言都有自己的一套语法,编

译器或者解释器就是负责把符合语法的程序代码转换成CPU能够执行的机器码,然后执行。
当语句以冒号: 结尾时,缩进的语句视为代码块。
但没有规定缩进是几个空格还是Tab。按照约定俗成的管理,应该始终坚持使用4个空格的缩进。
数据类型和变量:计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样
的数据,不同的数据,需要定义不同的数据类型。

***************数据类型 **************************

整数
Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,
计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x 前缀和0-9,a-f表示
如: 0xff00 , 0xa5b4c3d2

浮点数
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可
变的1.23e9 ,或者12.3e8 ,0.000012可以写成1.2e-5

字符串
字符串是以单引号’ 或双引号" 括起来的任意文本,比如’abc’ , “xyz” 等等。
如果字符串内部既包含’ 又包含" 怎么办?可以用转义字符\ 来标识,‘I’m “OK”!’
转义字符\ 可以转义很多字符,比如\n 表示换行, \t 表示制表符,字符\ 本身也要转义,所以\ 表
示的字符就是
如果字符串里面有很多字符都需要转义,就需要加很多\ ,为了简化,Python还允许用r’‘表示’‘内部的
字符串默认不转义,如果字符串内部有很多换行,用\n 写在一行里不好阅读,为了简化,Python允许用
‘’’…’’’ 的格式表示多行内容
一个布尔值只有True 、False 两种值
True
3 > 2
布尔值可以用and 、or 和not 运算。
True and False
5 > 3 and 3 > 1
5 > 3 or 1 > 3
not 1 > 2

布尔值经常用在条件判断中,比如:
age = 18
if age >= 18:
print(‘adult’)
else:
print(‘teenager’)

Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
len() 函数可以获得list元素的个数。
用索引来访问list中每一个位置的元素, 索引是从0 开始的, 记得最后一个元素的索引是
len(classmates) - 1 。

索引 0 1 2 …
列表 [ x1 x2 x3 … xn-1 xn]
索引 … -2 -1

当索引超出了范围时,Python会报一个IndexError 错误,所以,要确保索引不要越界。
如果要取最后一个元素,除了计算索引位置外,还可以用-1 做索引,直接获取最后一个元素。
如果一个list中一个元素也没有,就是一个空的list,它的长度为0

“”"


classmates = ['Michael', 'Bob', 'Tracy']
l=len(classmates)   #3
c0=classmates[0]    #'Michael'
c1=classmates[1]    #'Bob'
print('classmates= ',classmates)
print('len(classmates)= ',l)
print('classmates[0]= ',c0)

c0=classmates[-1]    #'Tracy'
c1=classmates[-2]    #'Bob'
print('classmates[-1]= ',c0)

list是一个可变的有序表,所以,可以往list中追加元素到末尾,
也可以把元素插入到指定的位置,比如索引号为1 的位置,
要删除list末尾的元素,用pop() 方法
要删除指定位置的元素,用pop(i) 方法,其中i 是索引位置
要把某个元素替换成别的元素,可以直接赋值给对应的索引位置

classmates = ['Michael', 'Bob', 'Tracy']
print('classmates= ',classmates)
classmates.append('Adam')  #['Michael', 'Bob', 'Tracy', 'Adam']
print('classmates= ',classmates)
classmates.insert(1, 'Jack')  #['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
print('classmates= ',classmates)
classmates.pop()              #['Michael', 'Jack', 'Bob', 'Tracy']
print('classmates= ',classmates)
classmates.pop(1)             #['Michael', 'Bob', 'Tracy']
classmates[1] = 'Sarah'       #['Michael', 'Sarah', 'Tracy']

L = ['Apple', 123, True] #list里面的元素的数据类型也可以不同
s = ['python', 'java', ['asp', 'php'], 'scheme'] #list元素也可以是另一个list

“”"
要拿到’php’ 可以写p[1] 或者s[2][1] ,因此s 可以看成是一个二维数组,
类似的还有三维、四维……数组,不过很少用到

“”"

“”"
x=s[2] #[‘asp’, ‘php’]
x=s[2][1] #‘php’
x=s[2][1][1] #‘h’

“”"
另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改

classmates = (‘Michael’, ‘Bob’, ‘Tracy’)

注意:list=[......], tuple=(......), list是方括号,tuple是圆括号。

现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法, 其他获取元素的方法

和list是一样的,你可以正常地使用classmates[0] , classmates[-1] ,但不能赋值成另外的元素。
不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。
如果可能,能用tuple代替list就尽量用tuple。
tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来

t = (1, 2)

如果要定义一个空的tuple,可以写成() ,
只有1个元素的tuple定义时必须加一个逗号',',来消除歧义, t = (1,)。
最后来看一个“可变的”tuple

t = (‘a’, ‘b’, [‘A’, ‘B’])
t[2][0] = ‘X’
t[2][1] = ‘Y’

表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)
存储,具有极快的查找速度。
假设要根据同学的名字查找对应的成绩,如果用list实现,需要两个list:

names = [‘Michael’, ‘Bob’, ‘Tracy’]
scores = [95, 75, 85]

给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,list

越长,耗时越长。

如果用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,

查找速度都不会变慢
kzjiang 2019/2/27 17:20:10
d = {‘Michael’: 95, ‘Bob’: 75, ‘Tracy’: 85} #注意:是大括号,list=[],tuple=()
x=d[‘Michael’]
print("d[‘Michael’]= ", x)
d = {‘Michael’: 95, ‘Bob’: 75, ‘Tracy’: 85}

d[‘Adam’] = 67
print(“d[‘Adam’]=”,d[‘Adam’])
d[‘Jack’] = 90
d[‘Jack’] = 88
print(“d[‘Jack’]=”,d[‘Jack’])
d = {‘Michael’: 95, ‘Bob’: 75, ‘Tracy’: 85}
x=‘Michael’ in d #x=true
x=‘Thomas’ in d #x=False
x=d.get(‘Michael’) #x=95
x=d.get(‘Thomas’) #x=None,注意:返回None 的时候Python的交互环境不显示结果。
x=d.get(‘Thomas’, -1) #x=-1
要删除一个key,用pop(key) 方法,对应的value也会从dict中删除

“”"

“”"
d.pop(‘Bob’)

请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的

和list比较,dict有以下几个特点:
  1. 查找和插入的速度极快,不会随着key的增加而变慢;

  2. 需要占用大量的内存,内存浪费多。
    而list相反:

  3. 查找和插入的时间随着元素的增加而增加;

  4. 占用空间小,浪费内存很少。

    所以,dict是用空间来换取时间的一种方法。
    因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全
    混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。
    要保证hash的正确性,作为key的对象就不能变。
    在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为
    key:

key = [1, 2, 3]
d[key] = ‘a list’

Traceback (most recent call last):
File “”, line 1, in
TypeError: unhashable type: ‘list’
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的
key要创建一个set,需要提供一个list作为输入集合。
注意,传入的参数[1, 2, 3] 是一个list,而显示的{1, 2, 3} 只是告诉你这个set内部有1,2,3这3个
元素,显示的顺序也不表示set是有序的。
重复元素在set中自动被过滤
通过add(key) 方法可以添加元素到set中,可以重复添加,但不会有效果
通过remove(key) 方法可以删除元素
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等
操作
s = set([1, 2, 3]) #{1, 2, 3}
s = set([1, 1, 2, 2, 3, 3]) #{1, 2, 3}
s.add(4) #{1, 2, 3, 4}
s.add(4) #{1, 2, 3, 4}
s.remove(4) #{1, 2, 3}

s1 = set([1, 2, 3])
s2 = set([2, 3, 4])
su=s1 & s2 #{2, 3}
si=s1 | s2 #{1, 2, 3, 4}

************************************ 分支结构 ************************************

*********** 条件判断 ***********
在Python程序中,用if 语句实现

if <条件判断1>:
<执行1>

if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>

例如:
kzjiang 2019/2/27 17:43:55
age = 20
if age >= 18: #注意不要少写了冒号’:’
print(‘your age is’, age) #your age is 20
print(‘adult’) #adult
根据Python的缩进规则,如果if 语句判断是True ,就把缩进的两行print语句执行了,否则,什么也不
做。
也可以给if 添加一个else 语句,意思是,如果if 判断是False ,不要执行if 的内容,去把else 执行
了。

“”"
kzjiang 2019/2/27 17:46:14
age = 3
if age >= 18:
print(‘your age is’, age)
print(‘adult’)
else:
print(‘your age is’, age)
print(‘teenager’)
kzjiang 2019/2/27 17:47:07
“”"
当然上面的判断是很粗略的,完全可以用elif 做更细致的判断

“”"
kzjiang 2019/2/27 17:47:15
age = 3
if age >= 18:
print(‘adult’)
elif age >= 6:
print(‘teenager’)
else:
print(‘kid’)
17:48:30
kzjiang 2019/2/27 17:48:30
if 语句执行有个特点,它是从上往下判断,如果在某个判断上是True ,把该判断对应的语句执行后,
就忽略掉剩下的elif 和else
if 判断条件还可以简写

if x:
print(‘True’)

只要x 是非零数值、非空字符串、非空list等,就判断为True ,否则为False

birth = input('birth: ')
if birth < 2000:
print(‘00前’)
else:
print(‘00后’)
17:51:02
kzjiang 2019/2/27 17:51:02
这是因为input() 返回的数据类型是str , str 不能直接和整数比较,必须先把str 转换成整数。
Python提供了int() 函数来完成这件事情
kzjiang 2019/2/27 17:51:24
s = input('birth: ')
birth = int(s)
if birth < 2000:
print(‘00前’)
else:
print(‘00后’)
************************************ 循环 ************************************

Python的循环有两种

*********** for…in循环 ***********

依次把list或tuple中的每个元素迭代出来

names = [‘Michael’, ‘Bob’, ‘Tracy’]
for name in names:
print(name)
sum = 0
for x in range(101):
sum = sum + x

print(sum)
*********** while循环 ***********
只要条件满足,就不断循环,条件不满足时退出循环
在循环中, break 语句可以提前退出循环。
在循环过程中,也可以通过continue 语句,跳过当前的这次循环,直接开始下一次循环
pass 语句什么也不做。它用于那些语法上必须要有什么语句,但程序什么也不做的场合,例如:

while True:
… pass # Busy-wait for keyboard interrupt (Ctrl+C)

这通常用于创建最小结构的类:

class MyEmptyClass:
… pass

另一方面,pass 可以在创建新代码时用来做函数或控制体的占位符。可以让你在更抽象的级别上思考。

pass 可以默默的被忽视:
*********************************** 函数调用 ************************************
************************************ 函数调用 ************************************
************************************ 函数调用 ************************************


************************************ 调用函数 ************************************

Python内置了很多有用的函数,我们可以直接调用, 要调用一个函数,需要知道函数的名称和参数。
可以直接从Python的官方网站查看文档:http://docs.python.org/3/library/functions.html
也可以在交互式命令行通过help(fun) 查看fun 函数的帮助信息
调用函数的时候,如果传入的参数数量不对,会报TypeError 的错误
如果传入的参数数量是对的,但参数类型不能被函数所接受,也会报TypeError 的错误,并且给出错误

信息
abs():求绝对值
max():求最大值
min():求最小值
int():把其他数据类型转换为整数
float():转换为浮点数
str():转换为字符串
bool():转换为布尔值
x=abs(-20) #20
x=max(2, 3, 1, -5) #3
x=int(‘123’) #123
x=int(12.34) #12
x=float(‘12.34’) #12.34
x=str(100) #‘100’
x=bool(2) #True
x=bool(0) #False
x=bool(’’) #False
18:47:13
kzjiang 2019/2/27 18:47:13
“”"
函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一
个“别名”

“”"
kzjiang 2019/2/27 18:48:14
a = abs # , 变量a指向abs函数
x=a(-10.5) # 10.5, 所以也可以通过a调用abs函数

x=sin(1) #未定义sin()函数

************************************ 定义函数 ************************************

在Python中,定义一个函数要使用def 语句,依次写出函数名、括号、括号中的参数和冒号: ,然后,

在缩进块中编写函数体,函数的返回值用return 语句返回。

以自定义一个求绝对值的my_abs 函数为例

kzjiang 2019/2/27 18:50:50
请注意,函数体内部的语句在执行时,一旦执行到return 时,函数就执行完毕,并将结果返回。
因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。

如果没有return 语句,函数执行完毕后也会返回结果,只是结果为None 。
return None 可以简写为return 。
在Python交
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值