codewars闯关玩耍1

news2024/12/22 20:38:42

codewars闯关玩耍1

  • codewars网址:https://www.codewars.com/dashboard

  • 大一时在知乎上看到的网站,然后 点击、收藏、吃灰 一键三连,最近翻收藏夹的时候突然又看见了决定进来玩玩,练练英语,巩固下python

  • 以后此系列,没事就写着玩玩

文章目录

  • codewars闯关玩耍1
  • Convert a String to a Number
    • 补基础
      • eval
  • Stop gninnipS My sdroW!
    • 补基础
      • [::-1]
        • 来实践下
      • join()
      • split()
      • enumerate()
    • 一个很大的知识漏洞... 和有些地方的引用搞混了 & pythontutor NB

Convert a String to a Number

  • 题目

    • Description

      • We need a function that can transform a string into a number. What ways of achieving this do you know? Note: Don’t worry, all inputs will be strings, and every string is a perfectly valid representation of an integral number.
    • Examples

      "1234" --> 1234 
      "605" --> 605 
      "1405" --> 1405 
      "-7" --> -7
      
  • AC

    def string_to_number(s):
        return eval(s)
    

    或者

    def string_to_number(s):
        return int(s)
    

补基础

eval

  • 这里记得eval有这种用法,但是忘了具体是干啥的了,去复习一下

    eval(expression, globals=None, locals=None) , eval() 函数用来执行一个字符串表达式,并返回表达式的值

    • The arguments are a string and optional globals and locals.
    • If provided, globals must be a dictionary.
    • If provided, locals can be any mapping object(映射对象).
    >>>x = 7
    >>> eval( '3 * x' )
    21
    >>> eval('pow(2,2)')
    4
    >>> eval('2 + 2')
    4
    >>> n=81
    >>> eval("n + 4")
    85
    

Stop gninnipS My sdroW!

题意好像是:住手!小鬼! 哈哈哈 ~

  • 题目

    • DESCRIPTION:

      Write a function that takes in a string of one or more words, and returns the same string, but with all five or more letter words reversed (Just like the name of this Kata). Strings passed in will consist of only letters and spaces. Spaces will be included only when more than one word is present.

    • examples

      spinWords( "Hey fellow warriors" ) => returns "Hey wollef sroirraw" 
      spinWords( "This is a test") => returns "This is a test" 
      spinWords( "This is another test" )=> returns "This is rehtona test"
      
  • AC, 有好几种写法

    def spin_words(sentence):
        words = sentence.split()
        for i in range(len(words)):
            if len(words[i]) >= 5:
                words[i] = words[i][::-1]
        return " ".join(words)
    

    使用列表生成式

    def spin_words(sentence):
        return ' '.join([ word[::-1] if len(word) >= 5 else word for word in sentence.split() ])
    

    使用enumerate

    def spin_words(sentence):
        words = sentence.split()
        for i,word in enumerate(words):
            if len(word) >= 5:
                words[i] = word[::-1]
        return ' '.join(words)
    

补基础

[::-1]

  • 关于[::-1],之前就记得是倒序,这次在StackOverflow看到一个很好的回答

  • Assuming a is a string. The slice notation in python has the syntax

    list[<start>:<stop>:<step>]
    

    So, when you do a[::-1], it starts from the end towards the first taking each element. So it reverses a. This is applicable for lists/tuples as well.

    Example -

    >>> a = '1234'
    >>> a[::-1]
    '4321'
    

    Then you convert it to int and then back to string (Though not sure why you do that) , that just gives you back the string.

来实践下

a = "strfeddsadafafzxvxbc"

print(a[::-1])
print(a[::2])
print(a[13:6:-1])
print('----------------------------------------------------------------')
print(a[3:6:-1])
print('----------------------------------------------------------------')
print(a[6:3:-1])
print(a[3:5:1])
print(a[1::-1])
print(a[0::-1])
print(a[-1::-1])
print(a[-1:-2:-1])
print(a[-1:0:-1])


cbxvxzfafadasddefrts
sredaaazvb
fafadas
----------------------------------------------------------------

----------------------------------------------------------------
dde
fe
ts
s
cbxvxzfafadasddefrts
c
cbxvxzfafadasddefrt

join()

  • 用于将序列中的元素以指定的字符连接生成一个新的字符串

  • str.join(sequence), sequence为要连接的元素序列

  • symbol = "-";
    seq = ("a", "b", "c"); # 字符串序列
    print symbol.join( seq ); # a-b-c
    

split()

  • str.split(str="", num=string.count(str)).

    • str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。

    • num – 分割次数。默认为 -1, 即分隔所有。

    • 返回值为分割后的字符串列表

  • str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
    print str.split( );       # 以空格为分隔符,包含 \n
    print str.split(' ', 1 ); # 以空格为分隔符,分隔成两个
    
    ['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
    ['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
    
    txt = "Google#Runoob#Taobao#Facebook"
     
    # 第二个参数为 1,返回两个参数列表
    x = txt.split("#", 1)
     
    print(x)
    ['Google', 'Runoob#Taobao#Facebook']
    

enumerate()

  • enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中

一个很大的知识漏洞… 和有些地方的引用搞混了 & pythontutor NB

  • 其实之前自己在之前的一篇刷题博客里面记过笔记,前面犯过错,是直接列表赋值会导致犯错

    • runoob Python可变对象和不可变对象

      其实感觉还是没有完全理解

    • 然后读了这篇,感觉写的不错,读完之后有点懂了

      • 不可变对象

        • 不可变指的是什么? 对象内容本身
          • python中的变量有一个内存空间,变量保存(指向)的是存储数据(对象)的内存地址,也叫对象引用
        • 变的是什么?

        i = 73 , i是变量,保存(指向)了对象73, 执行 i += 2, 变量的值此时改变了,创建了新对象75,变量改变了对象引用,指向了新对象75,旧对象会被垃圾回收

      • 可变对象

        m = [5, 9]
        m += [6]
        

        原来对象是[5, 9], 变的是原先对象的内容, 不会创建新对象,

        不变的是变量的指向,依旧指向原对象

        大概懂啦!

  • 在这题的时候,写了一次这样的写法

    这样子是无效的👇

    image-20230115210944741

    这样并没有改变原来的words 列表里面的内容,原因应该是python中string是immutable的

    下面是用pythontutor搞的

    image-20230115221537791 image-20230115221636275 image-20230115221741904
  • 于是在这里做了些实验,越做发现知识漏洞越多

    a = "strfeddsadafafzxvxbc"
    
    for char in a:
        char = chr(ord(char)+2)
    	print(char)
    print(a)
    
    for i in range(len(a)):
        char = a[i]
        char = chr(ord(char)+2)
    	print(char)
    print(a)
    
    
    b = [2,3,5,6]
    for num in b:
        num = num + 2
    print(b)
    
    for i in range(len(b)):
        num = b[i]
        num = num + 2
    print(b)
    
    
    for i in range(len(b)):
        b[i] = b[i] + 2
    print(b)
    
    
    
    u
    v
    t
    h
    g
    f
    f
    u
    c
    f
    c
    h
    c
    h
    |
    z
    x
    z
    d
    e
    strfeddsadafafzxvxbc
    u
    v
    t
    h
    g
    f
    f
    u
    c
    f
    c
    h
    c
    h
    |
    z
    x
    z
    d
    e
    strfeddsadafafzxvxbc
    [2, 3, 5, 6]
    [2, 3, 5, 6]
    [4, 5, 7, 8]
    
    ates = "strfeddsadafafzxvxbc"
    for i in range(len(a)):
        a[i] = ates[i]
    
    print(a)
    
    TypeError: 'str' object does not support item assignment
    

    这个得注意👆


  • 现在仔细想想都能明白了,再不明白的可以去pythontutor

    至于下面这个,我觉得学C的时候不会犯错,num改动了并不会影响b[i]

    for i in range(len(b)):
        num = b[i]
        num = num + 2
    print(b)
    
  • 是之前list 赋值给别的,那个会把原先的一起改变,比如下例,再次感叹pythontutor的强大

    b = [2,3,5,6]
    a = b
    for i in range(len(a)):
        a[i] += 1
    
    image-20230115222500292 image-20230115222514795 image-20230115222528598 image-20230115222543437

  • 没想到一道小题帮我找到这么多的问题
  • 另外pythontutor是真的NB, 半年前自己构想过类似的工具还激动半天,没想到N年前 UCB就把这玩意当作CS61B的教学工具了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/165703.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

javaweb10 JSP语法、JSTL、EL表达式、JSP标签、九大内置对象

文章目录一、JSP简介二、JSP原理三、JSP语法四、JSP指令五、九大内置对象六、EL表达式七、JSP标签八、JSTL标签一、JSP简介 JSP&#xff08;java sever pages&#xff09;&#xff1a;java服务器端页面&#xff0c;和servlet一样&#xff0c;用于动态web技术 写JSP就像在写HTM…

中国to B应用软件的突破之路

我曾经随手画过一个很简单的图&#xff1a;我就分为供需两端。&#xff08;1&#xff09;如何让生意越做越大&#xff1f;那就在需侧&#xff0c;增加尽量多的交互。有人理解在营销环节-客户关系触点经营&#xff0c;有人理解在销售环节-多渠道多业态销售&#xff08;如电话销售…

振弦采集模块配置工具VMTool生成寄存器值

振弦采集模块配置工具VMTool生成寄存器值 生成寄存器值 VMXXX 有很多按位使用的寄存器&#xff0c; 使用 VMTool 工具可进行方便的设置&#xff0c;当需要知道寄存器的实际值时&#xff0c;可通过以下两种方法获取。 &#xff08;保持【 自动读取】 复选框为非选中状态&#xf…

Unity 简易音乐播放系统

前言 众所周知, Unity自带音效播放没有回调,不能自动播放clip列表; 所以简单实现一个带自动播放功能的接口,用以实现音乐列表的逐个播放. 一. 功能分析 首先要求切换场景时音乐不停,只在需要时播放其次即传入音乐名和播放次数,即可将该音乐循环播放指定次数可以直接传入一个…

【OpenCV 例程 300篇】256. 特征检测之 CenSurE(StarDetector)算法

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程 300篇】256. 特征检测之 CenSurE&#xff08;StarDetector&#xff09;算法 6.9.1 算法简介 中心环绕算法&#xff08;Center Surround Extremas, CenSurE&#xff09;是 Agrawal M 等于 2008年提出的关键…

K8S StatefulSet基本使用

K8S StatefulSet 清空K8S对象 为了避免之前学习的内容造成的影响&#xff0c;先手动把K8S集群中的所有对象清空&#xff0c;使用一个全新的环境来学习StatefulSet的基本使用。 查看对象 查看service对象 kubectl get services查看ReplicaSet对象 kubectl get rs查看Repli…

达梦数据库导入dmp文件

找到达梦数据库安装文件的bin目录按着Shift键&#xff0c;右键输入以下命令&#xff08;注意更改参数&#xff09;.\dimp DGYH(用户名)/DGYH(密码)127.0.0.1 FILEdmp所在文件夹路径\20230103.dmp fullY然后根据提示,写Y 或 N 回车即可注意&#xff1a;若导入成功&#xff0c;但…

Java9的新特性模块化(Module)

一、 模块化是什么&#xff1f; Java 9引入了模块化系统&#xff0c;称为"Java Platform Module System"&#xff08;JPMS&#xff09; 这个系统允许将Java程序分成模块&#xff0c;每个模块都有自己的规范&#xff0c;可以明确地声明它依赖于哪些其他模块&#xff…

小波分析在电力系统暂态信号处理中的应用

前面我们主要讲了小波分析在机械振动信号或者其他时间序列中的应用 基于小波包特征提取和随机森林的CWRU轴承数据集故障识别 - 哥廷根数学学派的文章 - 知乎 https://zhuanlan.zhihu.com/p/556172942 基于小波区间相关&#xff08;Interval-Dependent&#xff09;的信号降噪方…

nacos源码分析-心跳检测(服务端)

前言 前面我们讲了《nacos源码分析-服务注册(客户端)》 和 《nacos源码分析-服务注册(服务端)》&#xff0c;主要是讲的服务注册流程&#xff0c;本章节我们来讲服务心跳检测机制。 心跳续约客户端 其实我们在讲 nacos服务注册客户端的时候顺带就说了心跳&#xff0c;服务注…

iNav飞控AOCODARC-F7MINI固件编译

iNav飞控AOCODARC-F7MINI固件编译1. 编译目标&#xff08;AOCODARC-F7MINI&#xff09;2. 编译步骤Step 1 软件配置环境准备Step 2 获取开源代码Step 3 构建命令介绍Step 4 厂家目标板查询Step 5 目标固件编译Step 6 目标固件清理3. 参考资料iNav是一款非常出色的飞控航模开源软…

怎么恢复360删除的文件?360文件恢复,快速完成

日常生活和工作中&#xff0c;使用电脑总会保存着很多数据。其中有我们很多的文件&#xff0c;如果不小心删除了重要的文件&#xff0c;我们该怎么恢复呢&#xff1f; 很多人都喜欢在电脑上安装3 60安 全卫士&#xff0c;文件被误删&#xff0c;我们可以通过它来恢复数据。文件…

来看看我在CSDN上的好朋友们吧,看看有没有你

首先&#xff0c;感谢支持我的所有人&#xff0c;其次&#xff0c;感谢支持我的所有人&#xff0c;然后感谢支持我的所有人&#xff0c;最后&#xff0c;感谢支持我的所有人&#xff08;我这是废话吗&#xff1f;&#xff1f;&#xff1f;不是吧&#xff09; 今天就来看看我在…

基于transfomer架构的模型[GPT、BERT、VIT、ST、MAE等等]总结

Transformer首先我们来回顾一下Transformer模型架构图对于Transformer从宏观角度可以可以理解为6个Encoder6个Decoder组成各部分介绍输入部分主要就是词嵌入位置编码对于词嵌入比较简单&#xff0c;就是对一个句子里的每个词做一个嵌入操作映射到相应的维度。一般来说就是先把句…

一次非典型的Netty内存泄露案例复盘

背景 作为后端开发相信大家或多或少都接触过Nettty&#xff0c;说起Netty真实又爱又恨&#xff0c;因为基于它可以很简单的开发高性能的Java网络通信服务&#xff0c;但同时要是不小心就会出现各种奇奇怪怪的问题&#xff0c;特别是由于特殊的内存管理机制很容易出现内存泄漏问…

数据大佬的成长经验分享 | ​我的非典型数据分析之路

小飞象交流会哪有什么错过的人&#xff0c;会离开的都是路人。哪有什么命运不公&#xff0c;都是懒惰让你变得无能。内部交流│19期数据大佬的成长经验分享我的非典型数据分析之路data analysis●●●●分享人&#xff1a;夏宇‍在大数据、人工智能热、5G、物联网的时代&#x…

1、Mavan项目管理工具

1.1 什么是 Maven 1.1.1 什么是 Maven Maven 的正确发音是[ˈmevən]&#xff0c;而不是“马瘟”以及其他什么瘟。Maven 在美国是一个口语化的词 语&#xff0c;代表专家、内行的意思。 一个对 Maven 比较正式的定义是这么说的&#xff1a;Maven 是一个项目管理工具&#xff0…

Spring Boot学习篇(十)

Spring Boot学习篇(十) shiro安全框架使用篇(二)——登录实例(密码以密文方式存储,不含记住密码) 1.模拟注册时,生成密文到数据库中 1.1 在zlz包下创建util包,并在下面创建SHAUtil01类(初始里面无方法)和SHAUtil02类,其目录结构如下所示 1.2 两种生成密文的方式 1.2.1 自己…

一篇文章彻底搞懂折半查找法[二分查找法]算法~

算法实现的要求&#xff1a; 折半查找法又称为二分查找法&#xff0c;这种方法对待查找的列表有两个要求&#xff1a; 1&#xff1a;必须采用顺序存储结构 2&#xff1a;必须按关键字大小有序排列算法思想&#xff1a; 将表中间位置记录的关键字与查找关键字进行比较&#x…

性能测试时那些「难以启齿」的问题-CPU相关

NO.1 为什么cpu使用率可以>100%? 小白的我在进行压测的时候&#xff0c;查看服务的cpu总使用率如下&#xff0c;总使用率会超过100%&#xff0c;这个数据是怎么来的呢&#xff0c;为什么会有大于100%的情况呢&#xff1f; 作为小白的我刚开始觉得这个问题应该很基础&#x…