Codewar (1)

0x00  前言

登陆了codewar平台刷题,被大神虐的非常惨 做了几道题感觉有些收获,记录一发

0x01 凯撒加密

这个程序曾经写过,记得利用chr() ord()函数判断ascii码范围

def encryptor(key, message):
    #Program me!
    lower=ord(‘a‘)
    upper=ord(‘A‘)
    ome=‘‘
    for i in range(0,len(message)):
        if message[i].islower():
            offset = (ord(message[i])-lower+key)%26
            ome+=chr(lower+offset)
        elif message[i].isupper():
            offset = (ord(message[i])-upper+key)%26
            ome+=chr(upper+offset)
        else:
            ome+=chr(ord(message[i]))
    return ome`

然而 大牛来打脸了

#clever 1
#ascii_lowercase ascii_uppercase 是内置的小写和大写字母的字符串
#string.maketrans(from,to) 产生一个转换表可以供translate使用 将from中的每个字母映射到to中的对应位置

from string import maketrans as mt ,ascii_lowercase as lc ,asscii_uppercase as uc

def encryptor(key,message):
    key %=26
    return message.translate(mt(lc+uc,lc[key:]+lc[:key]+uc[key:]+uc[:key]))

第二次打脸

#str.isalpha() 判断是否是字母
#将i.isupper() 用在表达式中 判断字母大小写
#  return ‘‘.join(lst) 将最开始的字符串初始化省略
#字符串可以直接迭代 不用用数组分割
#将列表转换成字符串用 ‘‘.join()

def encryptor (key, mess):
    lst = []
    for i in mess:
        if i.isalpha():
            C = 97 - 32 * i.isupper()
            lst.append (chr ((ord (i) - C + key)%26 + C))
        else:
            lst.append (i)
    return ‘‘.join (lst)`

0x02Weird String

`# This is a test => ThIs A TeSt
#This => ThIs
#My solution
‘‘‘
from string import ascii_uppercase as uc ,ascii_lowercase as lc
def to_weird_case(string):
    str1=‘‘
    lt1=[]
    lt=string.split()
    for n in lt:
        m=0
        for i in n:
            if i in uc or i in lc:
                if m%2==0:
                    str1+=i.upper()
                    m+=1
                else:
                    str1+=i.lower()
                    m+=1
        lt1.append(str1)
        str1=‘‘
    strf=‘‘
    for i in range(0,len(lt1)):
        if len(lt1)>1:
            strf+=lt1[i]+‘ ‘
        else:
            strf+=lt1[0]
    if len(lt1)>1:
        strf=strf[0:len(strf)-1]
    return strf
‘‘‘`

`#clever 1

def to_weird_case_word(string):
    return "".join(c.upper() if i%2 == 0 else c for i, c in enumerate(string.lower()))

def to_weird_case(string):
    return " ".join(to_weird_case_word(str) for str in string.split())`

`‘‘‘
黑魔法 1: for i,c in enumerate(string)
黑魔法 2 : ‘ ‘.join 将字符串间插入空格
‘‘‘
#clever 2

def to_weird_case(string):
    recase = lambda s: "".join([c.upper() if i % 2 == 0 else c.lower() for i, c in enumerate(s)])
    return " ".join([recase(word) for word in string.split(" ")])

`

时间: 2024-10-28 22:52:29

Codewar (1)的相关文章

使用 IDEA 创建 Maven Web 项目 (异常)- Disconnected from the target VM, address: '127.0.0.1:59770', transport: 'socket'

运行环境: JDK 版本:1.8 Maven 版本:apache-maven-3.3.3 IDEA 版本:14 maven-jetty-plugin 配置: <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <configuration> <webAppSourceDirectory>${pro

在深圳有娃的家长必须要懂的社保少儿医保,不然亏大了!(收藏)

在深圳有娃的家长必须要懂的社保少儿医保,不然亏大了!(收藏) 转载2016-07-26 17:21:47 标签:深圳少儿医保社保医疗保险住院 在深圳工作或生活的家长们可能还有人不清楚,其实小孩子最大的基础保障福利就是少儿医保.如果以前没重视关注的,现在您看到这篇文章还来得及!少儿医保每年政府财政补贴384元,自己只需交200元左右,就可以享受门诊报销1000元,住院报销比例90%,最高报销额度达148万,大病门诊最高报销比例90%!如何享受?有哪些待遇?接下来就详细来做一个介绍: 少儿医保投保需

彻底解决_OBJC_CLASS_$_某文件名&quot;, referenced from:问题(转)

最近在使用静态库时,总是出现这个问题.下面总结一下我得解决方法: 1. .m文件没有导入   在Build Phases里的Compile Sources 中添加报错的文件 2. .framework文件没有导入静态库编译时往往需要一些库的支持,查看你是否有没有导入的库文件同样是在Build Phases里的Link Binary With Libraries中添加 3. 重复编译,可能你之前复制过两个地方,在这里添加过两次,删除时系统没有默认删除编译引用地址在Build Settings里搜索

爱奇艺、优酷、腾讯视频竞品分析报告2016(一)

1 背景 1.1 行业背景 1.1.1 移动端网民规模过半,使用时长份额超PC端 2016年1月22日,中国互联网络信息中心 (CNNIC)发布第37次<中国互联网络发展状况统计报告>,报告显示,网民的上网设备正在向手机端集中,手机成为拉动网民规模增长的主要因素.截至2015年12月,我国手机网民规模达6.20亿,有90.1%的网民通过手机上网. 图 1  2013Q1~2015Q3在线视频移动端和PC端有效使用时长份额对比 根据艾瑞网民行为监测系统iUserTracker及mUserTrac

Android 导航条效果实现(六) TabLayout+ViewPager+Fragment

TabLayout 一.继承结构 public class TabLayout extends HorizontalScrollView java.lang.Object ? android.view.View ? android.view.ViewGroup ? android.widget.FrameLayout ? android.widget.HorizontalScrollView ? android.support.design.widget.TabLayout 二.TabLayou

微信小程序——豆瓣电影——(2):小程序运行部署

Demo 预览 演示视频(流量预警 2.64MB) GitHub Repo 地址 仓库地址:https://github.com/zce/weapp-demo 使用步骤 将仓库克隆到本地: bash $ git clone https://github.com/zce/weapp-demo.git weapp-douban --depth 1 $ cd weapp-douban 打开微信Web开放者工具(注意:必须是0.9.092300版本) 必须是0.9.092300版本,之前的版本不能保证正

初识运维3--在虚拟机中安装Linux发行版系统(CentOS)的方法

在讲Linux系统发行版本的安装过程之前,先大略说明一下虚拟化. 虚拟化:将底层硬件资源抽象为用户更容易读懂和使用的逻辑抽象层的技术. 最早由IBM提出,现使用率较高的虚拟化软件平台有三类:VMware workstation.VirtualBOX.HyperV.在这里使用VMware workstation作为例子讲解说明安装过程. 虚拟化网络: 桥接模式:让物理机和虚拟机利用物理网络接口完成通信.虚拟机可以访问互联网. 仅主机模式:让虚拟机和物理机利用被虚拟出来的VMnet1网络接口完成通信

pythonの函数学习笔记(一)

函数是可以实现一些特定功能的小方法或小程序定义函数function的方法:def function_name(arg1,arg2[,...]): statement [return value]注意事项:1.def开头,代表定义函数,def和函数名中间要敲一个空格:2.返回值不是必须的,如果没有renturn语句,则默认返回值None:3.函数名必须以下划线或字母开头,可以包含任意字母.数字或下划线的组合,区分大小写且不能是保留字: py使用名称空间的概念存储对象,这个名称空间就是对象作用的区域

网络攻防第一次作业(201421450010)

姓名:陈书扬 学号:201421450010 指导教师:高见 1.虚拟机安装与调试 安装windows和linux(kali)两个虚拟机,均采用NAT网络模式,查看主机与两个虚拟机器的IP地址,并确保其连通性.同时为两个虚拟机做一个快照 windows虚拟机 Linux虚拟机 本地主机win10 两台主机都ping通 2.Windows基本命令 dir显示目录   cd 进入目录 Arp -a -d -s arp缓存 net share 查看计算机IPC$共享资源 netstat -ano网络链