首页 > 解决方案 > 从数到无穷大的 if 语句

问题描述

我正在编写一个代码,它接受一个字符串,然后将其拆分为字符,然后根据列表长度做一些事情。问题是我不知道怎么写:

如果长度(以字符为单位)= 1, 4, 7, 10...(最多'infinity')执行 x 代码

如果长度(以字符为单位)= 2, 5, 8, 11...(最多'infinity')执行 y 代码

如果长度(以字符为单位)= 3, 6, 9, 12...(最多'infinity')执行 x 代码

我的意思是无穷大或者是一个足够大的数字,没有人能写出来

我一直在使用 python 并且了解循环/if 语句是如何工作的,但是我从来不需要提供像这样的条件,其中条件本身包含一系列特定数字,直到无穷大。一种解决方案是编写三个包含大量数字的列表,但我想知道是否有一种更简单、更省心的方法。

decoded 是分配给输入的变量(在代码上更进一步)它的数学表达式将是,对于第一个语句,1 + 3n,对于第二个,,2 +3n对于第三个,3 +3nn一个介于 0 和无穷大之间的实数

decodedl = list(decoded)
if len(decodel) == 1 #rest of the stament here
    #execute x chunk of code
if len(decodel) == 2 #rest of the stament here
    #execute y chunk of code
if len(decodel) == 3 #rest of the stament here
    #execute z chunk of code

预期结果如下:

如果我输入,例如:'Hello how are you',那么代码应该执行代码块 y,因为生成的列表的长度是 17:但是现在它不会像列表的长度那样做任何事情不是 1、2 也不是 3。

标签: python

解决方案


这是一个需要解决的逻辑难题。无需检查所有数字的成员资格,只需观察您所说的模式(1 + 3n、2 + 3n 和 3+ 3n)并从中构建您的逻辑。能被 3 整除的数的余数为 0。

if decodel: #make sure you eliminate empty string case
    if len(decodel)%3 == 1: #1 + 3n
        pass
    elif len(decodel)%3 == 2: #2 + 3n
        pass
    else: #3n
        pass

推荐阅读