一、变量和类型

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):的更多相关文章

  1. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  2. VS2013中Python学习笔记[Django Web的第一个网页]

    前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...

  3. python学习笔记之module && package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  4. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

  5. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  6. python学习笔记--Django入门0 安装dangjo

    经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...

  7. python学习笔记(一)元组,序列,字典

    python学习笔记(一)元组,序列,字典

  8. Pythoner | 你像从前一样的Python学习笔记

    Pythoner | 你像从前一样的Python学习笔记 Pythoner

  9. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

  10. python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹

    python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...

随机推荐

  1. Jion的应用

  2. onload + setTimeout 用法,制作广告弹框效果

    一般来说,只有 <body>,<img>, <link>, <script>,<frame>, <frameset>, < ...

  3. 对SQL 优化,提升性能!

    对SQL 进行优化能够有效提高SQL 语句的执行效率,降低系统资源开销,是开发者提高后端系统处理能力的首选方案. 新产品上线后,随着运营推广活动的开始,业务进入快速增长期,数据库作为后端系统唯一或者主 ...

  4. asp.net (web)选择文件夹 上传文件

    1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...

  5. HDU 6153 A Secret ( KMP&&DP || 拓展KMP )

    题意 : 给出两个字符串,现在需要求一个和sum,考虑第二个字符串的所有后缀,每个后缀对于这个sum的贡献是这个后缀在第一个字符串出现的次数*后缀的长度,最后输出的答案应当是 sum % 1e9+7 ...

  6. 【CF1247E】Rock Is Push(DP,二分)

    题意:有一个n*m的方格,每一格可能为空也可能有石头,要从(1,1)走到(n,m),每次可以往右或往下走 每次走的时候都会将自己面前的所有石头向移动方向推一格,如果碰到了边界就推不过去 问方案数模1e ...

  7. 给网页头部标题加logo

    现在在写公司的官网,需要在网页的头部加logo,没有加的时候是这样的 那么,现在只要一步,就可以了,加上一行代码 <link rel="icon" href="图标 ...

  8. IBM Security App Scan Standard 工具的使用

    1.AppScan是什么? AppScan是IBM的一款web安全扫描工具,可以利用爬虫技术进行网站安全渗透测试,根据网站入口自动对网页链接进行安全扫描,扫描之后会提供扫描报告和修复建议等. AppS ...

  9. 洛谷P2657 windy数

    传送 裸的数位dp 看这个题面,要求相邻两个数字之差至少为2,所以我们记录当前填的数的最后一位 同时要考虑毒瘤的前导0.如果填的数前面都是0,则这一位填0是合法的. emmm具体的看代码叭 #incl ...

  10. CentOS7 日常操作 2

    常用命令 文件与目录操作 命令 解析 cd /home 进入 ‘/home’ 目录 cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd - 返回上次所在目录 cp file1 file ...