Ce化学元素:化学元素符号任务(chemical element r)

我必须做一个任务,我们需要检查一个符号是否是一个有效的符号(通过任务的规则)

我可能无法解释的任务的背景信息:

作业提供的示例:

def isvalid(symbol, element, length = None):
    elbool = False
    
    if symbol[0]!=symbol[0].upper():
        return False #first letter in the symbol has to be a capital letter
    
        
    for i in range(len(symbol)-1):
            
        if element.find(symbol[i+1])>element.find(symbol[i]): #checking if the order is correct
            elbool = True
        else:
            return False
    
    if length is not None:
        if len(symbol)!=length:
            return False
        else:
            elbool = True
           
        
    return elbool

现在是我的代码,但它不工作,例如这个:isvalid('Rcm','Americium'),因为在 c 之前有一个 m,它计算那个。

所以我想我需要从符号中的最后一个字母拆分元素字符串,所以我没有这个问题,但是我该怎么做呢?

对不起,如果这个问题有点混乱。

1

您需要使用.find(needle, start_pos)element中的某个位置之后查找字符。此外,您不需要弄乱索引并继续从symbol中查找上一个当前字符。只需跟踪下一次迭代的当前字符位置即可。

您还应该进行不区分大小写的搜索,因为,使用您的示例,"Americium"中没有"R"。我通过将element转换为小写一次,然后对symbol中的每个字符执行.find(c.lower(), ...)

最后,您忘了检查symbol中第一个字符以外的所有字符都是小写的。

element = element.lower() # Lowercase element so that we can find characters correctly
lastfound = 0
for ix, c in enumerate(symbol):
    if ix > 0 and c.isupper():
        # Not the first character, and is uppercase
        return False
    thisfound = element.find(c.lower(), lastfound) # Find the location of this character
    if thisfound == -1: # character not found in element after location lastfound
        return False
    lastfound = thisfound # Set lastfound for the next iteration

其他一些小建议:

你可以return False只要你发现有问题,然后,在函数的末尾,只需return True,因为你到达终点的唯一方法是什么都没有错。

您可以使用symbol[0].islower()检查字符是否为小写。无需执行symbol[0] != symbol[0].upper()

在检查字符顺序之前,您应该检查长度要求,因为这是更简单的检查。

应用所有这些:

def isvalid(symbol, element, length = None):
    if symbol[0].islower():
        return False
    if length is not None and len(symbol) != length:
        return False
    
    element = element.lower() # Lowercase element so that we can find characters correctly
    lastfound = 0
    for ix, c in enumerate(symbol):
        if ix > 0 and c.isupper():
            return False
        thisfound = element.find(c.lower(), lastfound) # Find the location of this character
        if thisfound == -1: # character not found in element after location lastfound
            return False
        lastfound = thisfound # Set lastfound for the next iteration
  
    return True

使用您的测试:

>> isvalid('Zer', 'Zeddemorium')
True
>> isvalid('Zer', 'Zeddemorium', 2)
False
>> isvalid('di', 'Zeddemorium')
False
>> isvalid('Rcm', 'Americium')
True

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(147)
Svg标签:svg中嵌入的视频标签(svg video)
上一篇
Hello图床:制作 5张床文件重叠的维恩图(bed diagram)
下一篇

相关推荐

  • css 渐变:Welcome To Our Website

    示例示例CSS渐变是一种从一种颜色向另一种颜色平滑过渡的效果,它可以使用不同的颜色,也可以使用相同的颜色,但是颜色的强度会有所不同。CSS渐变有两种:线性渐变和径向渐变。…

    2023-09-14 01:34:14
    0 15 57
  • css波纹扩散:Unlock the Power of CSS Wave Diffusion

    CSS波纹扩散是一种基于CSS的动画效果,它可以让一个元素在页面上产生一个波纹扩散的效果。代码如下:…

    2023-07-18 01:28:04
    0 76 47
  • css底部对齐:Welcome to Our Website

    示例示例css底部对齐指的是将多个元素的底部对齐,使用CSS实现底部对齐可以使用flex布局。代码示例:…

    2023-04-04 16:01:40
    0 88 80
  • css初始化样式文件: center;}

    示例示例CSS初始化样式文件是用来重置浏览器默认样式的CSS文件,它可以让不同的浏览器在显示网页时有统一的样式。下面是一个CSS初始化样式文件的示例代码:…

    2023-06-01 02:05:34
    0 68 83
  • css透明色:The Beauty of Transparent Colors

    示例示例CSS透明色是指使用CSS定义的颜色,其中包含一定的不透明度。它可以让你的网页上的元素部分透明,而不会影响其他元素的外观。CSS透明色可以使用rgba()函数来定义,rgba()函数接受4个参数,分别是红色(red)、绿色(green)、蓝色(blue)和alpha值,alpha值表示透明度。…

    2023-03-18 06:00:19
    0 42 66
  • css cursor属性:探索CSS Cursor属性,让你的页面更有交互性

    示例示例CSS cursor属性是用来设置鼠标指针的形状。它可以接受多种值,包括指针,文本,加号,减号,手型等。代码示例:…

    2023-02-14 11:20:49
    0 30 78
  • css3 文字渐变:CSS3 Text Gradient

    CSS3 文字渐变是一种使用 CSS3 来给文字添加渐变效果的技术,它利用了 CSS3 的 background-image 属性,通过设置 linear-gradient() 来实现渐变效果。…

    2023-01-27 14:07:45
    0 99 28
  • css3箭头:Welcome to CSS3 Arrows World!

    CSS3箭头是一种使用CSS3来创建箭头的方法。它可以使用CSS3中的边框属性,如border-top、border-right、border-bottom和border-left来实现,并且可以使用不同的颜色和宽度来定制箭头的样式。…

    2023-08-04 06:17:12
    0 62 92

发表评论

登录 后才能评论

评论列表(12条)