python学习笔记(8):
一、变量和类型
1.Python基本变量类型: 整数 ,浮点数 ,字符串, 布尔值 ,空值 ,函数, 模块, 类型, 自定义类型
2.变量定义 :变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。 变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。(弱类型) 变量赋值 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。(重要!!!) 等号(=)用来给变量赋值,等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。
try:
print(x)
except NameError:
print('NameError: "x" is not defined') #这个地方就会打印出x没有被定义 但是如果是实现对x进行赋值的话,就不会报错
try:
x = 100
print(x)
except NameError:
print('NameError: "x" is not defined') #这里直接输出100
二、常见字符串的处理:
0.python中string数据类型是不支持修改的
import string
"""
在python中,字符串是不可以被修改的
"""
s = 'abc'
print(s[])
s[] = 'x'
print(s)
这个地方会报错:TypeError: 'str' object does not support item assignment str对象不支持项目的赋值操作
1.去除空格及特殊符号:strip, lstrip, rstrip
去除空格操作,因为在python中字符串是不可以被修改的,所以在去除空格之后会返回一个新的字符串,而不是一个老的字符串,将老的字符串扔掉,
# 去除空格操作,因为在python中字符串是不可以被修改的,所以在去除空格之后会返回一个新的字符串,而不是一个老的字符串,将老的字符串扔掉,
s =' abcd e f g er f dfs dsf d f '
print(s.strip()) #删除前后的空格 返回带有删除了前导和尾随空格的字符串副本。
print(s.lstrip()) #删除左边的空格 返回删除了前导空格的字符串副本。
print(s.rstrip()) #删除右边的空格
print(s) #原来的字符串不会改变
2.复制字符串:str1 = str2
3.连接字符串 str2 += str1 new_str = str2 + str1
#字符串的连接
s1='abc'
s2='def'
print(s1+'\n'+s2)
4.字符串的大小写
#字符串的大小写
s = 'abc def '
print(s.upper()) # upper()函数将所有的字母全部改成大写的
print(s.upper().lower()) #lower()函数将所有的字母改成小写
print(s.capitalize()) #实现字符串的首字母大写
5.字符串位置比较
#位置比较
s_1 = 'abcdefg'
s_2 = 'abdeffxx'
print(s_1.index('bcd'))
try:
print(s_2.index('bcd'))
except ValueError:
pass #这里表示遇到这个异常什么都不做,继续做下去
Return the lowest index in S where substring sub is found,
如果在字符串S中找到这个子字符串了,这个子串是包含在字符串S中,可选的参数start和end被解释为切片的方法,如果在找不到子串的时候,就会引发ValueError
such that sub is contained within S[start:end]. Optional
arguments start and end are interpreted as in slice notation.
Raises ValueError when the substring is not found.
在python3中cmp函数被移除了,字符串之间的比较,直接比较就可以了
# 字符串的比较
print(s_1==s_2) # False
print(s_1<s_2) # True
print(s_1>s_2) #False
6.查找字符串:pos = str1.index(str2)
7.比较字符串:cmp(str1, str2)
8.字符串长度:len(str)
#查看字符串的长度
print(len('')) #空字符串在内存中还是分配了一个指针
print(len('abcdfdfsf sdf asdf'))
9.字符串切割
# 字符串的分割和连接
s = 'abc,def,ghi'
splited = s.split(',') #将字符串进行分割,分割的方式是按照逗号来进行分割
"""
Return a list of the words in the string, using sep as the delimiter string.
使用sep来作为字符串的分隔符,返回一个在字符串中的单词列表
sep
The delimiter according which to split the string.
None (the default value) means split according to any whitespace,
and discard empty strings from the result.
sep:是进行字符串切割的分隔符,None表示根据空白来进行切割,并且从结果中丢弃空白的字符串 maxsplit
Maximum number of splits to do.
- (the default value) means no limit.
最大切割:
将要切割的最大数量 -1表示没有限制
"""
print(type(splited)) #
print(splited)
s = """abc
def
ghi
jkl """
s_1 = s.split('\n') #将字符串按照换行符来进行分割
print(s_1)
s_2 = s.splitlines()
print(s_2) #返回字符串中的行列表,在行边界处断开。除非给出了keepends,否则换行符不包含在结果列表中
10.字符串的连接
# 本方法将字符串组合回去
s = ['abc','def','ghi']
print(''.join(s)) # 连接符什么都不使用
print('#'.join(s)) #中间的连接符是#
print('\n'.join(s)) #中间使用换行符进行连接
11.对字符串的常用判断
# 字符串的常用判断
s='abcdefghi'
print(s.startswith('a')) #判断字符串是不是以a为开头的
print(s.endswith('hi')) #判断字符串是不是以hi结尾的 print('1234abcd'.isalnum()) #true 如果这个字符串是一个alpha-numeric字符串的话就返回True,否则就返回False
#如果一个字符串中所有的字符都是按照字母表的顺序的字符串,并且在字符串中至少有一个字符,那么就是alpha-numeric字符串
print('1234abwcd\t'.isalnum()) #true 判断这个字符串中是不是只有0-9和a-z之间的字符的话就返回True
print('123dsf'.isalpha()) #判断是不是只有字符没有数字的情况
print('123abc'.isdigit())
print('12345'.isdigit()) #判断是不是只有纯数字的情况
print(' '.isspace()) #判断是不是只有space
print('abcd1234'.islower()) #判断字符串是不是都是小写的
print('aAabcd1234'.islower()) #如果字符都是小写的就返回True
print('aAabcd1234'.isupper())
print('AVCD'.isupper()) #判断字符串是不是都是大小的
print('Avvv'.istitle()) #判断是不是标题,即是在一个字符串中只有首字母是大写的,其他字符串都是小写的
print('ASSSdsf'.istitle()) #False
print('Hello World'.istitle()) #True 每个单词的首字母都是大写的
12.将数字转换为字符串
print(str()) #将int值转换为字符串
print(str(.)) #将float型数值转换为字符串
print(type(str(5.234)))
print(str(-5.123))
13.将字符串转换为数字
#将字符串转换为数字
print(int('')) # 整数字符换可以自动的转换为整数值
print(float(123.45)) # 浮点型的数值字符串也可以转换为浮点数
print(int('123.45')) # 浮点型的字符串不能直接的转换为整数
print(int('ffff',16)) #指定转换的进制,将16进制转换为十进制的数值
14.作业:字符串按照单词反转,必须保留所有的空格 I Love china! 转换为china! Love I
三、条件判断
1.真值判断 if x == True:
if x:
if not x:
#if判断
a =
b =
c =
if c==a:
print(a)
elif c==b:
print(c)
else:
print(b)
2.空值判断 if x is None:
if not x:
#None的判断
x = None
if x is None:
print('None')
else:
print('Not None')
比较 if a == b:
if a > b: ...
四、循环控制
1.for循环
for i in range(begin, end, steps): <=> for (i = begin; i < end; i += steps)
#for循环
# for i in range(,,): # 这个地方range(,,)表示步长是从0开始,到30结束,步长是5,不包括最后一个元素
# print(i)
2.while循环
while 条件判断:
#while循环
s=
i =
while i<=:
s+=i
i+=
print('s=',s)
for i in range(,):
if i<:
pass #什么都不做
elif i<:
continue #什么都不做,跳出本次循环进入下一次循环
elif i<:
print(i)
else:
break # 到35的时候跳出本次循环
注意在python中:
pass :不做任何事情,只起到占位的作用
continue: 跳出本次循环
break:结束循环
exit():结束整个程序
3.循环嵌套
4.循环控制:
break
continue
pass
五.函数
0.
def func_name(arg_1,arg_2):
print(arg_1,arg_2)
return arg_1,arg_2 #当返回多个值的时候,是返回的tuple,返回一个元组,只读的list r= func_name(,)
print(type(r)) # r的数据类型是一个元组
1.函数定义格式
(1)默认参数
def func(x,y=):
return x+y
print(func(,))
print(func())
注意在python参数的次序和声明可以不一致,这一点与C语言不一样,在python中随意调换
def func(x,y=):
print('x = ',x)
print('y = ',y)
return x+y
print(func())
print(func(y=,x=))
print(func(x=))
(2)可变参数:*args,自动组装成tuple
可变参数传递进来之后,就自动打包成tuple,就是一个值不可变的数组
tuple:元组,等价于只读数组
def func(name,*numbers): #这个可变参数就是告诉python程序,后面处理这个可变数组的时候,把数据放到这个可变数组中去
print(type(numbers))
func('Tom',,,,,'tom','def')
def my_print(*args): #这个*是告诉将*后面的内容撞到一个数组中去
print(args)
my_print(1,2,3,4,5,6,'a','b','c') #可变参数形成一个元组tuple
(3)关键字参数:*args,自动组装成dict
def func(name,**kvs): #**后面的参数,在进行传递的时候,一定要将他的名字带上
print(name)
print(type(name)) #打印出name的数据类型
print(type(kvs)) #打印出kvs的数据类型
print(kvs) #打印出kvs
func('Tom',china='BeiJing',uk='London')
def func(a,b,c,*,china,uk):
print(china,uk)
func(1,2,3,china='BJ',uk='LD')
(4)命名关键字参数
# 可变参数
def func(a,b,c=,*args,**kvs):
print(a,b,c)
print(args)
print(kvs)
func(,)
func(,,)
func(,,,'a','b','c')
func(,,,'a','b','c',)
func(,,,'a','b',china='BJ',uk='LD')
2.函数调用
(1)函数名(参数名)
(2)模块名.函数名(参数名)
(3)带参数名调用
2. 什么是递归?
递归求和
def my_sum(i):
if i<:
raise ValueError
elif i<=:
return i
else:
return i+my_sum(i-) print(my_sum())
print(my_sum())
print(my_sum())
print(my_sum())
print(my_sum())
计算斐波那契数列
def fib(n):
if n<:
raise ValueError
elif n<=:
return
else:
return fib(n-)+fib(n-) print(fib())
print(fib())
print(fib())
print(fib())
print(fib())
print(fib())
汉诺塔问题:
汉诺塔问题
def hanoi(n,A,B,C):
if n==: #如果只有一个盘子,直接将盘子移动到目标柱子上去
print(A+'->'+B)
else:
hanoi(n-,A,C,B) # 如果盘子比较多的话,先将上面的n-1个盘子从source移动到source上去
print(A+'->'+B)#再将底下的盘子移动到目标上去
hanoi(n-,C,A,B) hanoi(,'A','B','C')
在python中函数是可以作为参数的
函数是可以作为参数的
def sum(x,y,P=None):
s=x+y
if P:
P(s)
return s
sum(,)
sum(,,print) #这个地方将print以函数的形式进行传入
python学习笔记(8):的更多相关文章
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
- VS2013中Python学习笔记[Django Web的第一个网页]
前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...
- python学习笔记之module && package
个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- python学习笔记--Django入门0 安装dangjo
经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...
- python学习笔记(一)元组,序列,字典
python学习笔记(一)元组,序列,字典
- Pythoner | 你像从前一样的Python学习笔记
Pythoner | 你像从前一样的Python学习笔记 Pythoner
- OpenCV之Python学习笔记
OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...
- python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹
python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...
随机推荐
- for循环性能测试
项目中遇到需要用for循环dom节点获取每个节点保存的数据,一共有8000多条数据,但是循环加载需要18秒左右才出来. 平时for循环中数据少感觉不出来,现在数据多了就有差别了. 部分代码如下 var ...
- zrender笔记----(数字Number组件)出现的问题和解决办法
1.期望的效果是这样子的(这也是最终结果): 2.开始是用json假数据,开始没考虑null的问题,导致在判断传值处,判断有误. 导致在对接接口时,凌乱了,后来修改了下变成后面图C的逻辑,json数据 ...
- 软件工程 in MSRA 黄金点游戏-第一次结对编程
简单介绍 第一次结对编程,邹欣老师选择了一个博弈游戏作为题目.博弈论是一门非常有趣的学科.之前竞赛时接触的博弈论大部分都是存在均衡点/必胜策略的.像这次这种多人参与,没有完美策略,你方唱罢我登台的游戏 ...
- WPF Microsoft.Practices.Unity 注入大法简单示例
最近新入职了公司,做WPF方向的项目,进来后看到这边大量运用了依赖注入来解耦,采用的是Microsoft.Practices.Unity. WPF的话,目前主要有两个技术来实现IOC,unity和ME ...
- Eclipse中jar包的导出与导入
JAR的含义: JAR是Java的档案文件,是Java Archive File的缩写.jar文件是一种压缩文件,就是以特定类型压缩包的形式存在的完整Java项目.通常通过导入jar包的方式来使用实现 ...
- [转]SpeedPHP微信接口扩展
这个扩展实现了SP和微信公众平台的对接,1.0版暂时只实现了最简单的功能:绑定,收信息,回复信息. 扩展配置方法: $spConfig = array( 'mode' => 'debug ...
- HTML canvas中translate()与rotate()的理解
首先,当我们在页面上初始化canvas时,相当于在上面放了一块画布,这块画布我们可以理解为上面有一个坐标系(如下图),左上角是原点,往右是X轴的正方向,往下是Y轴的正方向,我们在画布上绘制的内容都是基 ...
- jni中arm64-v8a,armeabi-v7a,armeabi文件夹的意义和用法<转>
jni中arm64-v8a,armeabi-v7a,armeabi文件夹的意义和用法 起因 之前并没有关注这块,直到:您的应用被拒绝,原因:xplay5sQ心里点击笑值点击拍照显示停止运行,查看发过来 ...
- xargs -i参数详解
学习所需,文章转载过来! xargs与find经常结合来进行文件操作,平时删日志的时候只是习惯的去删除,比如 # find . -type f -name "*.log" | xa ...
- 关于问题的四个单词区别: question problem matter issue
[[ 网上讨论的 problem, question, issue, matter这些名词均含"问题"之意.problem: 指客观上存在的.难以处理或难以理解的问题.questi ...