一 内置函数

  1. revserd 翻转,返回的是迭代器

# 将 s 倒置
s = '不是上海自来水来自海上'
# 方法一
print(s[::-1])
# 方法二
s1 = reversed(s)
i = ''
for el in s1:
  i +=el
  print(i)

  2.slice 切片

lis = ['nishi','woshi','shuia','benjim']
s = slice(1,3)
print(lis[s])

  3.formate

# 格式化输出
s = "我叫{name},我想去{adress},我喜欢{hobby}.".format(name='zhangmeng',adress='上海',hobby='dance')
print(s) # 字符串
print(format('test', '<20')) # 左对齐
print(format('test', '>20')) # 右对齐
print(format('test', '^20')) # 居中
# 数值
print(format(3, 'b')) # 二进制
print(format(97, 'c')) # 转换成unicode字符
print(format(11, 'd')) # 十进制
print(format(11, 'o')) # 八进制
print(format(11, 'x')) # 十六进制(小写字母)
print(format(11, 'X')) # 十六进制(大写字母)
print(format(11, 'n')) # 和d一样
print(format(11)) # 和d一样
# 浮点数
print(format(123456789, 'e')) # 科学计数法. 默认保留6位小数
print(format(123456789, '0.2e')) # 科学计数法. 保留2位小数(小写)
print(format(123456789, '0.2E')) # 科学计数法. 保留2位小数(大写)
print(format(1.23456789, 'f')) # 小数点计数法. 保留6位小数
print(format(1.23456789, '0.2f')) # 小数点计数法. 保留2位小数
print(format(1.23456789, '0.10f')) # 小数点计数法. 保留10位小数
print(format(1.23456789e+10000, 'F')) # 小数点计数法.

  4. type() 返回类型    ord()  输入字符找字符编码的位置     chr()  输入位置找出对应的字符    ascii()判断给出的信息是否是ascii

for i in range(65536):
print(chr(i), end="")

二. 递归

  函数自己调用自己,递归的入口(参数)  和 出口(return)

语法:

def func():
print('我是递归')
func() func() # 官方显示最多到1000.但不会跑到1000,实际到998
# 树形结构的遍历

import os
def func(lujing, n):
lis = os.listdir(lujing) # 打开文件夹,列出文件夹内的所有文件名
for el in lis: # el 为文件的名字
# 还原文件路径
path = os.path.join(lujing,el)
if os.path.isdir(path):# 判断路径是否是文件夹
print('*' * n,el) # 显示文件夹的名字
func(path, n+1) # 再来一次
else:
print('/t'*n,el) # 显示文件 func('f:/a', 0)
import os
def func(lujing, n):
lis = os.listdir(lujing ) # 打开文件夹,列出文件夹内的所有文件名
for el in lis: # el为文件名
# 还原文件的路径
path = os.path.join(lujing, el)
if os.path.isdir(path): # 判断路径是否是文件夹
print('*'* n, el) # 显示文件夹名称
func(path, n+1) # 再来一次
else:
with open(path,mode='wb') as f: # 打开文件,都写入内容
f.write(b'')
print('/t'*n, el) # 显示文件
func('F:/a',0)

三. 二分法

  掐头结尾取中间,查找效率非常高,二分法查找的主要作用就是查找元素
# 二分法查找
lst = [1,4,6,7,9,21,23,45,67,87,65,43,89]
n = int(input('请输入一个数:'))
lst = sorted(lst)
# print(lst)
left = 0
right = len(lst)-1
while left <= right:
mid = (left + right)//2
if n > lst[mid]:
left = mid+1
elif n < lst[mid]:
right = mid -1
else:
print("存在")
break
else:
print('不存在')
# 递归 切割列表

def func(n,lst):
left = 0
right = len(lst)-1
if lst != []:
mid = (left+right)//2
if n>lst[mid]:
func(n,lst[mid+1:])
elif n < lst[mid]:
func(n,lst[:mid])
else:
print("找到了")
return
else:
print("没找到")
return n = int(input('请输入你要查找的数:'))
lst = [1,4,6,7,9,21,23,45,67,87,65,43,89] func(n,lst)
# 递归2
def func(n,lst,left,right): # 递归找到什么是可变的,什么是不可变的
if left <= right:
mid = (left+right)//2
if n > lst[mid]:
left = mid+1
return func(n,lst,left,right)
elif n < lst[mid]:
right = mid - 1
return func(n, lst, left, right)
else:
print('找到了')
return mid # 难点
else:
print('找不到')
return -1 n = int(input('请输入你要查找的数:'))
lst = [13,45,56,67,78,57,89,101]
ret = func(n,lst,0,len(lst)-1)
print(ret)
# 最快的查找方法

lst = [13,45,56,57,67,78,89,101]

# 找出最大的数
new_lst = []
for i in range(99):
new_lst.append(0) for i in lst:
new_lst[i] = 1 i = int(input('请输入你要找的数据:'))
if new_lst[i] == 0:
print('不存在')
else:
print('存在')

python 递归和二分法的更多相关文章

  1. python递归和二分法

    一.递归 1.递归就是自己调用自己 def fn(n): print(n) fn(n+1) fn(1) #递归深度官方1000 一般都递归到998 2.树形结构的遍历 import os def fn ...

  2. python之匿名函数、递归与二分法

    一.匿名函数 什么是匿名函数? 顾名思义就是没有名字的函数,在我们声明一个函数时会想起个什么函数名好,这个问题我想有时候会困惑大家的吧?   def func(): #正常函数声明 pass prin ...

  3. python函数:匿名函数、函数递归与二分法、面向过程编程

    今天主要讲三大部分内容: 一.匿名函数二.函数递归与二分法三.面向过程编程 一.匿名函数: """ 1. 什么时匿名函数 def定义的是有名函数:特点是可以通过名字重复调 ...

  4. python递归 及 面向对象初识及编程思想

    递归 及 面向对象初识及编程思想   一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递 ...

  5. 用Python递归解决阿拉伯数字转为中文财务数字格式的问题(2)--打开思路的一种方法

    几天前自己写了个将阿拉伯数字转为中文财务数字的程序.用的递归,不幸的是它是树形递归. 虽然实际过程中不太可能出现金额数字大到让Python递归栈溢出,但是始终是一块心病,这玩意终究在理论上是受限制的. ...

  6. Python递归_打印节点信息

    Python递归_打印节点信息 递归特性:1.必须由一个明确的结束条件2.每次进入更深一层递归时,问题规模相比上一次递归都应该有所减少3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用时 ...

  7. PYTHON-匿名函数,递归与二分法,面向过程编程-练习

    # 四 声明式编程练习题 # 1.将names=['egon','alex_sb','wupeiqi','yuanhao']中的名字全部变大写names = ['egon', 'alex_sb', ' ...

  8. PYTHON-匿名函数,递归与二分法,面向过程编程

    """匿名函数1 什么是匿名函数 def定义的是有名函数:特点是可以通过名字重复调用 def func(): #func=函数的内存地址 pass 匿名函数就是没有名字的 ...

  9. Python递归实现汉诺塔

    Python递归实现汉诺塔: def f3(n,x,y,z): if(n==1): print(x,'--->',z) else: f3(n-1,x,z,y) print(x,'--->' ...

随机推荐

  1. window.location API

    概述 今天被自己鄙视了,竟然不会用window.location.search进行页面传值.现在好好总结下window.location API,记录一下供以后开发时参考,相信对其它人也有用. 页面传 ...

  2. 转---谈谈HTTP协议中的短轮询、长轮询、长连接和短连接

    作者:伯乐在线专栏作者 - 左潇龙 http://web.jobbole.com/85541/ 如有好文章投稿,请点击 → 这里了解详情 引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此 ...

  3. 一步步Cobol 400上手自学入门教程05 - 表

    在COBOL中有几类典型结构的表.这几类典型结构的表在大体上可分为下标表和索引表两大类.另外,根据表的重复次数定义又有定长表和变长表.此外,表还允许嵌套,因此还有嵌套表.这几类表均符合表的基本定义,都 ...

  4. Linux玩转redis从入门到放肆--1.缓存击穿

    1. 缓存穿透在大多数互联网应用中,缓存的使用方式如下图所示: 1.当业务系统发起某一个查询请求时,首先判断缓存中是否有该数据:2.如果缓存中存在,则直接返回数据:3.如果缓存中不存在,则再查询数据库 ...

  5. web socket 入门

    WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议,其优雅地解决了以往web服务器不能向web客户端实时推送消息的问题. 在浏览器js环境中,创建一个websock ...

  6. Python网络练习题

    练习题 什么是C/S架构? C/S架构客户端.服务端架构,C/S端软件主要有网络游戏,QQ等 互联网协议是什么?分别介绍五层协议中每一层的功能? 互联网协议:计算机之间的通信标准 物理层:主要是基于电 ...

  7. oracle 11g RAC数据库监听配置相关

    oracle RAC 监听配置基本和单实例的配置相同 11g之后 安装RAC的过程中,不需要执行netca来手动创建监听,在安装集群软件的时候,会自动创建监听程序: 而在DBCA建库的时候,又会自动创 ...

  8. Python 模块 和 包

    模块 os模块 路径拼接 os.path.join

  9. 基于.Net + SqlServer的分库分表设计方案

    在说分库分表之前,先简单介绍下网站架构,这样有助于理解为何需要分库分表这种技术.因为所有的技术,大多都是因为业务的需要而产生的. 1.网站发展的第一阶段 大致架构如下,因为没有多少用户访问,所以单台服 ...

  10. 微信web开发者工具、破解文件、开发文档和开发Demo下载

    关注,QQ群,微信应用号社区 511389428 下载: Win: https://pan.baidu.com/s/1bHJGEa Mac: https://pan.baidu.com/s/1slhD ...