Python作业(二)【中级语法练习题】(一些有趣的小游戏)

Day10(Python作业)

(Python作业来自qq群:651707058,欢迎任何程度的Python学习者)

题一:求凯撒密码

凯撒密码的加密方法是:每当你想要加密一段文字时,你需要选择一个移位值 S,
它是一个0到25之间的整数。然后,你把文字中的每一个字母用S个位置之后的字母
替换(假设S=1,那么A就用B替换)。如果位置超过了Z,那么就要从A开始继续数。

例如:密文: Ifsf up tubz 移位值s=25
输出的明文为:Here to stay

程序要求输入一段明文后,再输入一个移位值,输出相应的凯撒密码。

def Caesar_code(L,s):
    if not isinstance(L,str): #类型检查
        raise TypeError('"{n}" must be str')
    L1=''
    for i in L:
        a=ord(i)
        b=a+int(s)
        if i==' ':
            L1+=' '
        elif ord('A')<=a<=ord('Z'):
            if b>ord('Z'):
                b=ord('A')+(b-ord('Z'))-1
            else:
                L1 += chr(b)
        else:
            if b>ord('z'):
                b=ord('a')+(b-ord('z'))-1
            else:
                L1+=chr(b)
    return L1
print(Caesar_code('Ifsf up tubz',25))

题二:统计出现最多的单词

统计一段话中出现最多次数的单词,单词一样,大小写不同视为同一个单词
输出出现次数最多的单词的时候,将其变成小写输出
例如:
Here is a line like sparkling wine
Line up fast or be the last
输出:line

from collections import Counter
import re
L=' Here is a line like sparkling wine ' \
  'Line up fast or be the last'
L1=re.findall(r'[a-zA-Z]+',L)
L2=[]
for i in range(0,len(L1)):
  L2.append(L1[i].lower())
L3=Counter(L2).items()
for j in L3:
  result=sorted(L3,key=lambda j:j[1])
print(result[-1][0])

题三:简单设计一个验证码生成器

要求生成一个4位验证码,每一位都有可能是数字、大写字母、小写字母,当生成一个验证码后。
程序提示输入验证码。用户输入后,程序可以判断输入的验证码的正误,其中验证码验证不分字母大小写。
例如:生成的验证码为:X8p7
请输入验证码:x8P7
输出:验证成功
例如:生成的验证码为:X8p7
请输入验证码:x8L7
输出:验证失败

import random
L=[]
def validate_code():
    s = ''
    for i in range(0,10):
        L.append(i)
    for j in range(65,91):
        L.append(chr(j))
    for z in range(97,123):
        L.append(chr(z))
    validate=random.sample(L,4)
    for k in validate:
        s+=str(k)
    print(s)
    code=input('请输入验证码:')
    if code.lower()==s.lower():
        print('验证成功')
    else:
        print('验证失败')

题四:求最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,”flow”,”flight”]
输出: “fl”
示例 2:
输入: [“dog”,”racecar”,”car”]
输出: “”
解释: 输入不存在公共前缀。

def longestCommonPrefix(str_list):
    '''
    :param str_list:传入的是元素为字符串的列表 
    :return:  最长公共前缀
    '''
    len_list = [len(w) for w in str_list]
    len_min = min(len_list)
    perfix = ''
    for i in range(1, len_min + 1):
        for j in range(1, len(str_list)):
            if str_list[j][0:i] != str_list[j - 1][0:i]:
                return perfix
        perfix = str_list[0][0:i]
    return perfix
print(longestCommonPrefix(["flower","flow","flight"]))

以上是我写的代码,不太好,下面可以参考一个大佬的代码:
https://blog.csdn.net/tobe_numberone/article/details/81448359

你可能感兴趣的:(作业)