python的一些练习凯撒密码、3位水仙花数计算等。

1、给定一个list a, 满足a[i+1] >= a[i], 给定int key ,找出list a 中第一个大于等于key的元素的index,无满足要求的元素则返回-1。

import random
#创造list
def create_list(len_list):
    a = []
    for i in range(0,len_list):
        b = random.randint(i,i+1)
        a.append(b)
    return a
#判断是否有满足元素,有则返回位置
def return_key_index(a,key):
    if a[19]<key:
        return -1
    else:
        for i in range(0, 20):
            if key<=a[i]:
                return i

if __name__ == '__main__':
    #输入一个值,然后查找
    key = int(input('输入一个值找到第一个大于等于这个值的位置:'))
    a = create_list(20)  #创建list a
    print(a)
    #得到这个index位置
    index = return_key_index(a,key)
    print(index)

2、读出以下输出结果

v = dict.fromkeys(['k1','k2'],[])
v['k1'].append(666)
print(v)
v['k1'] = 777
print(v)

输出:

{'k1': [666], 'k2': [666]}
{'k1': 777, 'k2': [666]}

3、按照一下要求定义一个游乐园门票类,并尝试计算2个成人+1个小孩子平日票价

1.平日票价100元
2.周末票价为平日票价120%
3.儿童半价

#定义一个游乐园门票类  有一个属性票价,一个计算票价方法
class Tickets():
    def __init__(self,ticket_rates):
        self.ticket_rates = ticket_rates

    @classmethod
    def calculate_fares(cls,num_adults,num_kids,is_usualday):
        fares = num_adults*100+num_kids*50
        if is_usualday:
            return fares
        else:
            return fares*1.2

if __name__ == '__main__':
    #计算票价
    fares = Tickets.calculate_fares(2,1,1)
    print(fares)

4、1.从开发的代码库中得到一组数据,表示每个文件的代码变更情况

{‘login.py’: ‘a 8 d 2 u 3’, ‘order.py’: ‘a 15 d 0 u 34’, ‘info.py’: ‘a 1 d 20 u 5’}
其中 a表示新增行数,d表示删除行数,u表示修改行数。login.py的变更行数为13

dict_py = {'login.py': 'a 8 d 2 u 3',
           'order.py': 'a 15 d 0 u 34', 'info.py': 'a 1 d 20 u 5'}
for k, y in dict_py.items():  
    num_change = 0  #这是累计数,要输出的结果
    for x in dict_py[k].split():  #split()分割
        if x.isdigit():  #判断是否数值
            num_change += int(x)
    print('%s文件中有%d列更改了' % (k, num_change))

5、 定义一个函数func(listinfo) listinfo:为列表,listinfo = [133, 88, 24, 33, 232, 44, 11, 44],返回列表小于100,且为偶数的数

#传出一个列表,元素是满足条件的数
def func(listinfo):
    list_return = []
    for i in listinfo:
        if (i<100)&(i%2 == 0):
            list_return.append(i)
    return list_return

if __name__ == '__main__':
    listinfo = [133, 88, 24, 33, 232, 44, 11, 44]
    list1 = func(listinfo)
    print(list1)

6、自己定义一个异常类,继承Exception类, 捕获下面的过程:判断raw_input()输入的字符串长度是否小于5, 如果小于5,比如输入长度为3则出:" The input is of length 3,expecting at least 5’,大于5输出"print success’

#自定义自己的异常类
class MyException(Exception):
    def __init__(self,length,at_least):
        super().__init__()
        self.length = length
        self.at_least = at_least
    #自定义返回的字符串
    def __str__(self):
        if self.length<=self.at_least:
            return ('The input is of legth %d,expecting at least %d'%(self.length,self.at_least))
        else:
            return ('print success')

try:
    s = input('输入一串字符串:')
    at_least = 5
    raise MyException(len(s),at_least)

except MyException as e:
    print(e)

7、完美立方:找到大于1的4个整数满足完美立方等式:a3=b3+c3+d3(例如123=63+83+103)。编写一个程序,对于任意给定的正整数N(N ≤100),寻找所有的四元组(a,b,c,d),满足a3=b3+c3+d3,其中1<a,b,c,d≤N。

n = int(input('输入一个小于一百大于2的正整数:'))
while n<2 or n>100:
    n = int(input('重新输入一个小于一百大于2的正整数:'))
'''编写一个程序,对于任意给定的正整数N(N ≤100),
寻找所有的四元组(a,b,c,d),满足a3=b3+c3+d3,其中1<a,b,c,d≤N。'''
for x in range(2,n):
    for y in range(2,x):
        for i in range(2,y):
            for j in range(2,i):
                if x*x*x == (y*y*y+i*i*i+j*j*j):
                    a = [x,y,i,j]
                    print(a)


8、恺撒密码:凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:

Str = input('输入要加密的字符串\n')
for i in range(0, len(Str)):
    if Str[i] == ' ':
        print(' ', end="")
    elif Str[i] in ['x', 'y', 'z']:
        # print('{}'.format(chr(ord(Str[i]) - 23)), end="") #另一种写法
        print(chr(ord(Str[i])-23),end='')
    else:
        # print('{}'.format(chr(ord(Str[i]) + 3)), end="") #另一种写法
        print(chr(ord(Str[i])+3),end='')

9、3位水仙花数计算:“3位水仙花数”是指一个三位整数,其各位数字的3次方和等于该数本身。例如:ABC是一个“3位水仙花数”,则:A的3次方+B的3次方+C的3次方 = ABC。

请按照从小到大的顺序输出所有的3位水仙花数,请用一个“逗号+空格”分隔输出结果。

for i in range(100,999):
    a = (i//100)%10
    b = (i//10)%10
    c = i%10
    if (a*a*a+b*b*b+c*c*c)==i:
        print('%d, '%(i))

10、给定两个非负整数x和y,如果某一整数等于xi+yj,其中整数i>= 0且j>=0,那么我们认为该整数是一个"精致"的数。返回值小于或等于n(n<=200)的所有精致的数组成的列表。结果列表中每个值最多出现一次,同时请使用sorted保证结果唯一。

输入格式:共三行,每一行为一个整数,分别是x y n
输出格式:共一行,为一个列表。
输入样例:
1
2
5
输出样例:[2, 3, 5]

x = int(input('输入x:\n'))
y = int(input('输入y:\n'))
n = int(input('输入n:\n'))
list_num = []  #收集的列表
for num in range(1,n+1):
    for i in range(0,n):
        for j in range(0,n):
            if (pow(x,i)+pow(y,j)) == num:  #pow是求n次方
                list_num.append(num)
print_list = sorted(list_num)  #排序
new_list = []  #要输出的
new_list.append(print_list[0])  #先添加第一个,后面相同则不添加,不同则添加
for i in range(0,len(print_list)-2):
    if print_list[i] == print_list[i+1]:
        pass
    else:
        new_list.append(print_list[i+1])
print(new_list)

猜你喜欢

转载自blog.csdn.net/paul0926/article/details/88706627
今日推荐