"""
1. 加密是日常生活中经常用到的保护信息内容的方法,
比如非常简单的凯撒密码,利用字母移位来加密字母,
比如让字母移动1位,比如a变成b,b变成c,最后z变成a,
将内容整体移动一位来加密内容,
现在要求实现这样的一个加密类,有一个加密的方法,
也有一个解密到的方法,请实现这样的一个类
"""
class Encryption:
def encryption(self,password):
self.password = password
stri = ''
for i in self.password:
if i == 'z' or i == 'Z':
i = ord(i) - 25
i = chr(i)
else:
i = ord(i) + 1
i = chr(i)
stri += i
return stri
def decryption(self,p):
self.p = p
stri2 = ''
for i in self.p:
if i == 'a' or i == 'A':
i = ord(i) + 25
i = chr(i)
else:
i = ord(i) - 1
i = chr(i)
stri2 += i
return stri2
password = input('输入密码:')
a = Encryption()
p = a.encryption(password)
b = a.decryption(p)
print('加密过后的密码',p)
print('解密过后的密码',b)
"""
2. 有两个长度一样列表a和b,它们里面的元素都是整形的数值,要求:通过交换两个列表的元素,使得sum(a) 和 sum(b)的差值最小
提示如下:
1.将两序列合并为一个序列,并排序,为列表Source
2.拿出最大元素Big,次大的元素Small
3.在列表Source中找出最大值和最小值,将最大值和Small放在一起组成列表 c,将最小值和Big放在一起组成列表 d
4.再在列表Source中找出最大值和最小值,重新计算sum(c)和sum(d),将最大值放在重新计算后和最小的列表里面,最小值放在另一个列表里面
5.重复第4步,直到分完
(华为06年面试题)
"""
num = int(input('你想要列表有几个元素'))
a = []
b = []
i = 0
while i < num: #两个列表中添加数据
a.append(int(input('输入整形数据')))
b.append(int(input('也输入整形数据')))
i += 1
Source = a + b
Source.sort() #合并后的列表从小到大排序
Big = Source[-1] #列表中最大的
Small = Source[-2] #列表中次大的
Source.pop(-1)
Source.pop(-1)
c = [Small,Source[-1]]
d = [Big,Source[0]]
Source.pop(-1)
Source.pop(0)
i = True
while i:
temp = 0
temp1 = 0
for i in range(0,len(c)):
temp = temp + c[i]
for i in range(0,len(d)):
temp1 = temp1 + d[i]
if temp > temp1:
c.append(Source[0])
d.append(Source[-1])
Source.pop(-1)
Source.pop(0)
elif temp < temp1:
d.append(Source[0])
c.append(Source[-1])
Source.pop(-1)
Source.pop(0)
else:
c.append(Source[0])
d.append(Source[-1])
Source.pop(-1)
Source.pop(0)
if len(Source) == 0:
i = False
print(c)
print(d)
"""
3. 定义一个类,可以对输入的文章进行统计,要求实现以下几个方法:
1. 统计出各个单词出现的次数和频率
2. 查看出现频率最多的前10个单词
3. 输入单词能够得到单词的出现次数和频率
"""
import re
class Statistical: #统计
def calculast(self,p):
self.p = p
self.article = re.split('[?| |,|.|!]',p)
self.de_weight = set(self.article)
self.dict1 = {} #方便查询的字典
self.list1 = [] #总列表
temp = [] #间接列表
for i in self.de_weight:
x = 0
for j in self.article:
if j == i:
x += 1
temp = [i,x]
self.list1.append(tuple(temp))
self.dict1 = dict(self.list1)
print(self.list1)
print(self.dict1)
def Ten(self): #文章单纯>10,打印前十个, <10,全部打印
if len(self.de_weight) <= 10:
print(self.list1)
else:
self.list1.sort(key = lambda x:x[1],reverse=True)
print(self.list1[:10])
def Inquire(self,keyv):
print(self.dict1[keyv])
wen_zhang = input('输入文章:')
a = Statistical()
a.calculast(wen_zhang)
a.Ten()
word = input('输入要查询的单词:')
a.Inquire(word)
"""
4. 写一个函数实现将包含100个元素的列表随机分成12分,每份至少有2个元素
"""
import random
def divide(li):
dict1 = {}
for i in range(12):
stri = 'list'+str(i)
dict1[stri]= []
for j in range(2):
temp = random.choice(li)
dict1[stri].append(temp)
li.remove(temp)
list_keys = list(dict1.keys())
while True:
key1 = random.choice(list_keys)
va = random.choice(li)
dict1[key1].append(va)
li.remove(va)
if li == []:
return dict1
list_i = [i for i in range(100)]
dict2 = divide(list_i)
for k,v in dict2.items():
print(k,v)
"""
5. 给定一个列表和一个值,列表中数字两两相加如果有等于这个值的,
就返回这两个值的索引,否则返回[-1, -1],比如:
1. 给定列表[1, 5, 7, 20], 给定值12,返回[1,2]
2. 给定列表[1, 2, 6, 8 ], 给定值2,返回[-1, -1]
"""
element = int(input('您想在列表中添加几个元素,必须大于1'))
li = []
while element >= 1:
value = int(input(f'输入{element}个元素'))
li.append(value)
element -= 1
num = int(input('请输入一个数值'))
list_zong = [] #总列表
for i in range(len(li)):
for j in range(len(li)):
if j <= i:
continue
if li[i] + li[j] == num:
list_temp = [i,j] #过度列表
list_zong.append(tuple(list_temp))
if list_zong == []:
list_zong = [-1,-1]
print(list_zong)
else:
print(list_zong)
'''
6.一个列表,里面都是整数,要求删除一个元素,使得剩余元素的乘积最大
现在要求找到这个待删除的元素
来源参考:https://mp.weixin.qq.com/s/Ct5AxXCuDhyHCg7ykCg1kQ
'''
li = []
num = int(input('列表中想添加几个元素:'))
if num <= 1:
raise Exception('列表元素不够') #如果列表中只想添加<=1提前报错
while num >= 1:
value = int(input(f'输入{num}个元素:'))
li.append(value)
num -= 1
n = 0
for i in li:
if i < 0:
n += 1
if n%2 == 0:
if n == len(li):
li.sort()
print('要移除下标为:', 0, '的数,他的值为:', li[0])
else:
li.sort()
print('要移除下标为:',n,'的数,他的值为:',li[n])
elif n%2 == 1:
if n == len(li):
li.sort()
print('要移除下标为:', -1, '的数,他的值为:', li[-1])
else:
li2 = []
for i in li:
if i < 0:
li2.append(i)
li2.sort()
temp = li2[-1]
index = li.index(temp)
print('要移除下标为:',index,'的数,他的值为:',temp)
2021-05-06
最新推荐文章于 2022-03-18 20:49:57 发布