Python基础练习题(2)

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

例如:密文: Ifsf up tubz 移位值s=25

输出的明文为:Here to stay

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

def password(string,s):
    new_str=''
    for i in string:
        if ord(i)>=ord('a') and ord(i)<=ord('z'):
            num=ord(i)+s
            if num>ord('z'):
                num=num-26
            new_str=new_str+chr(num)
        else:
            num=ord(i)+s
            if num>ord('Z'):
                num=num-26
            new_str=new_str+chr(num)
    return new_str
if __name__=='__main__':
    print(password('Ifsf',25))

2.统计一段话中出现最多次数的单词,单词一样,大小写不同视为同一个单词

输出出现次数最多的单词的时候,将其变成小写输出

例如:Here is a line like sparkling wine Line up fast or be the last.

输出:line

string='Here is a line like sparkling wine Line up fast or be the last'
list1=list()
list2=list()
a=string.lower()
list1=a.split()
num=list1.count(list1[0])
string=list1[0]
for i in range(len(list1)):
    if list1.count(list1[i])>num:
        string=list1[i]
print(string)

3.要求生成一个4位验证码,每一位都有可能是数字、大写字母、小写字母,当生成一个验证码后

程序提示输入验证码。用户输入后,程序可以判断输入的验证码的正误,其中验证码验证不分

字母大小写。

例如:生成的验证码为:X8p7 请输入验证码:x8P7 输出:验证成功

例如:生成的验证码为:X8p7 请输入验证码:x8L7 输出:验证失败

import random
#生成四位随机验证码
def alp_num():
    list1=list()
    string=''
    for i in range(26):
        key=chr(65+i)
        list1.extend([key,key.lower()])
    list1.extend([str(x) for x in range(10)])
    random.shuffle(list1) #打乱下顺序,更随机
    for j in range(4):
        string=string+random.choice(list1)
    return string
#验证输入验证码与系统产生验证码是否相同
def make_sure(string):
    print('----验证码:{0}----'.format(string))
    my_string=input('请输入验证码:')
    stirng1=change_alp(my_string)
    stirng2=change_alp(string)
    if stirng1==stirng2:
        print('验证成功!')
        return True
    else:
        print('验证失败!')
        return False
#函数功能:将验证码中的字母变成小写,数字不变
def change_alp(string):
    str1=''
    for i in string:
        if i.isalpha():
            a=i.lower()
            str1=str1+a
        else:
            str1=str1+i
    return str1
if __name__=='__main__':
    while True:
        string=alp_num()
        end=make_sure(string) #接收make_sure函数返回值
        if end:#如果验证正确,跳出循环 
            break

4.

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。

示例 1:

输入: ["flower","flow","flight"]    输出: "fl"

示例 2:

输入: ["dog","racecar","car"]   输出: ""

def longestCommonPrefix(str_list):

param str_list:传入的是元素为字符串的列表

return: 最长公共前缀

def longestCommonPrefix(str_list):
    list1=[]
    list3=[]
    my_string=''
    for i in str_list: #求出列表中字符串元素的最小长度
        list1.append(len(i))
    min_length=min(list1)
    for m in range(min_length): #生成这样的列表[['f','f'.'f'],['l','l','l'],['o','o','i'],['w','w','g']]
        list2=[]
        for n in range(len(str_list)):
            list2.append(str_list[n][m])
        list3.append(list2)
    if list3[0].count(list3[0][0])!=len(list3[0]):#判断列表的第一个元素是不是全相同
        my_string='""'
        return my_string
    else:
        for i in range(len(list3)):
            if list3[i].count(list3[i][0])==len(list3[i]):
                my_string=my_string+list3[i][0]
            else:  #如果遇到不全相同的元素就结束
                break
        return my_string
if __name__=='__main__':
    string=["flower","flow","floght"]
    print(longestCommonPrefix(string))

 

 

你可能感兴趣的:(Python基础练习)