1.python语言有哪些特点
python是一门面向对象的解释性语言
解释型,开源,简单,易学,免费
可扩展性,丰富的库,可移植性,面向对象
规范的代码(十分严格)
2.列举你所知道的排序算法,并用python语言实现一个排序
博客https://blog.csdn.net/mxz19901102/article/details/80087596
插入排序
希尔排序
冒泡排序
快速排序
选择排序
堆排序
基数排序
归并排序
3.python中的可变参数和关键字参数
可变参数:在Python函数中,可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。定义可变参数和定义普通参数相比,仅仅在参数前面加了一个*号,例如def cul(nums)。
关键字参数:可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。在参数前加2个号即可,例如def cul(**kws)
第四题
def f(x,l=[]):
for i in range(x):
l.append(i*i)
print(l)
f(2)#[0, 1]
f(3,[3,2,1])#列表内元素可重复 [3,2,1]+0 [0,1,,1,2,3,4]
f(3)#[0,1,,4]
5.下面这些是什么意思:@classmethod,@staticmethod,@property
链接https://www.cnblogs.com/wangyongsong/p/6750454.html
什么是特性property,property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值
为什么要用property
将一个类的函数定义成特性以后,对象再去使用的时候obj.name,根本无法察觉自己的name是执行了一个函数然后计算出来的,这种特性的使用方式遵循了统一访问的原则
import math
class Circle:
def __init__(self,radius): #圆的半径radius
self.radius=radius
@property
def area(self):
return math.pi * self.radius**2 #计算面积
@property
def perimeter(self):
return 2*math.pi*self.radius #计算周长
c=Circle(10)
print(c.radius)
print(c.area) #可以向访问数据属性一样去访问area,会触发一个函数的执行,动态计算出一个值
print(c.perimeter) #同上
'''
输出结果:
314.1592653589793
62.83185307179586
'''
6.编程:输入一个字符串,输出该字符串中字符的所有组合
例如:输入字符串"1 2 3" 则输出为1,2,3,12,13,23,123,不考虑顺序,所以12,21的等价
7.谈谈你所知道的python web框架
Django flask web.py Tornado web2.py
8.python编程实现斐波那数列
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。
Python 实现斐波那契数列代码如下:
# 获取用户输入数据
nterms = int(input(“你需要几项?”))
第一和第二项
n1 = 0
n2 = 1
count = 2
判断输入的值是否合法
if nterms <= 0:
print("请输入一个正整数。")
elif nterms == 1:
print("斐波那契数列:")
print(n1)
else:
print("斐波那契数列:")
print(n1,",",n2,end=" , ")
while count < nterms:
nth = n1 + n2
print(nth,end=" , ")
# 更新值
n1 = n2
n2 = nth
count += 1
a=0
b=1
while b < 1000:
print(b)
a, b = b, a+b
递归方式实现斐波那契数列 前n项:
# 递归方式实现 生成前20项
lis =[]
for i in range(20):
if i ==0 or i ==1:#第1,2项 都为1
lis.append(1)
else:
lis.append(lis[i-2]+lis[i-1])#从第3项开始每项值为前两项值之和
print(lis)
简述left join 和right join
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行
给定一个无序的整数数组a[],其中有n个整数 请写程序找到其中的中位数
1.取前len(nums)/2个元素建立小顶堆。可以知道堆顶元素是前len(nums)/2个元素中最小的。
2.从第len(nums)/2+1个元素开始,依次将其与堆顶元素比较。若比对顶元素大,则替换之,并调整堆。
3.数组剩下的所有元素比较完后,可以输出中位数。数组长度为奇数时,输出堆顶元素即可。数组长度为偶数时,输出堆顶元素与它的孩子结点中较小的那个的均值。
#coding:utf-8
def heap_adjust(parent,heap): #更新结点后进行调整
child=2*parent+1
while len(heap)>child:
if child+1<len(heap):
if heap[child+1]<heap[child]:
child+=1
if heap[parent]<=heap[child]:
break
heap[parent],heap[child]=heap[child],heap[parent]
parent,child=child,child*2+1
def find(nums):
heapnum=len(nums)//2
heap=nums[:heapnum+1]
for i in range(len(heap)//2-1,-1,-1): #前n/2个元素建堆
heap_adjust(i,heap)
for j in range(heapnum+1,len(nums)):
if nums[j]>heap[0]:
heap[0]=nums[j]
heap_adjust(0,heap)
#奇数时是最中间的数,偶数时是最中间两数的均值
return heap[0] if len(nums)%2==1 else float(heap[0]+min(heap[1],heap[2]))/2
python给定一个有序的整数数组a[],其中有n个整数,请写程序找到其中是否包含值等于
给定一个无序的整数数组a[],其中有n个整数,自己实现一个排序算法(不能调用系统排序函数),输出排序后结果
思路:冒泡法排序
封装一个工具,操作redis,不管什么端口来的,给一个键,返回值,封装成一个工具
import redis
class MyRedis():
def __init__(self,ip,password,port=6379,db=1):#构造函数
try:
self.r = redis.Redis(host=ip,password=password,port=port,db=db) #连接redis固定方法,这里的值必须固定写死
except Exception as e:
print('redis连接失败,错误信息%s'%e)
def str_get(self,k):
res = self.r.get(k) #会从服务器传对应的值过来,性能慢
if res:
return res.decode() #从redis里面拿到的是bytes类型的数据,需要转换一下
def str_set(self,k,v,time=None): #time默认失效时间
self.r.set(k,v,time)
def delete(self,k):
tag = self.r.exists(k)
#判断这个key是否存在,相对于get到这个key他只是传回一个存在火灾不存在的信息,
# 而不用将整个k值传过来(如果k里面存的东西比较多,那么传输很耗时)
if tag:
self.r.delete(k)
else:
print('这个key不存在')
def hash_get(self,name,k): #哈希类型存储的是多层字典(嵌套字典)
res = self.r.hget(name,k)
if res:
return res.decode() #因为get不到值得话也不会报错所以需要判断一下
def hash_set(self,name,k,v): #哈希类型的是多层
self.r.hset(name,k,v) #set也不会报错
def hash_getall(self,name):
res = self.r.hgetall(name) #得到的是字典类型的,里面的k,v都是bytes类型的
data={}
if res:
for k,v in res.items(): #循环取出字典里面的k,v,在进行decode
k = k.decode()
v = v.decode()
data[k]=v
return data
def hash_del(self,name,k):
res = self.r.hdel(name,k)
if res:
print('删除成功')
return 1
else:
print('删除失败,该key不存在')
return 0
@property #属性方法,
# 使用的时候和变量一个用法就好比实例,A=MyRedis(), A.clean_redis使用,
# 如果不加这个@property,使用时A=MyRedis(), A.clean_redis() 后面需要加这个函数的括号
def clean_redis(self):
self.r.flushdb() #清空 redis
print('清空redis成功!')
return 0
a = MyRedis('118.0000','HK0000*')
print(a.str_get('duan'))
以上答案来自网络,如果侵权联系删除