Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查字符串列表中最后一个字符的多个if/else条件_Python - Fatal编程技术网

Python 检查字符串列表中最后一个字符的多个if/else条件

Python 检查字符串列表中最后一个字符的多个if/else条件,python,Python,我有这个清单 num_list=["mille", "duemila", "tremila", "quattromila", "cinquemila", "seimila", "settemila", "ottomila", "novemila", "diecimila", "milione", "miliardo", "milioni",'miliardi','mila'] 我想建立以下列表 output=['millesimo', 'duemillesimo','tremillesimo'

我有这个清单

num_list=["mille", "duemila", "tremila", "quattromila", "cinquemila", "seimila", "settemila", "ottomila", "novemila", "diecimila", "milione", "miliardo", "milioni",'miliardi','mila']
我想建立以下列表

output=['millesimo', 'duemillesimo','tremillesimo','quattromillesimo','cinquemillesimo','seimillesimo','settemillesimo', 'ottomillesimo', 'novemillesimo', 'diecimillesimo', 'milionesimo', 'miliardesimo', 'milionesimo','miliardesimo']
从每个字符串中删除最后一个字符后,应按照以下条件进行构建:

  • 如果单词是“
    mila
    ”,什么也不要做
  • 如果单词以“
    l
    ”结尾,则添加“
    lesimo
  • else(如果删除最后一个字符后字符串的最后两个字符为“
    ll
    ”或字符串为“
    milion
    ”、“
    miliard
    ”),则添加“
    esimo
我开始做如下工作:

numeri_card_esimo = [x[:-1] + 'lesimo' if x[:-2] == 'll' else x[:-1] + 'esimo' for x in numeri_card_esimo]
输出与我想要的不太接近:

['millesimo',
 'duemilesimo', # it should be duemillesimo
 'tremilesimo', # same as above
 'quattromilesimo', # same as above
 'cinquemilesimo', # same as above
 'seimilesimo', # same as above
 'settemilesimo', # same as above
 'ottomilesimo', # same as above
 'novemilesimo', # same as above
 'diecimilesimo', # same as above
 'milionesimo',
 'miliardesimo',
 'milionesimo',
 'milesimo'] # it should be excluded

但由于错误地使用了
if/else
条件,因此它不起作用。我应该如何编写这些条件?

在我看来,您试图应用的逻辑在列表理解中使用有点长。为了可读性,最好将其移动到函数中

def convert(num):
    num = num[:-1]
    if num[-2:]=='ll' or num=='milion' or num=='miliard':
        num = num + 'esimo'
    elif word[-1]=='l':
        num = num + 'lesimo'
    return num

num_list=["mille", "duemila", "tremila", "quattromila", "cinquemila", "seimila", "settemila", "ottomila", "novemila", "diecimila", "milione", "miliardo", "milioni",'miliardi','mila']

# Remove mila occurrences
num_list = [num for num in num_list if num!='mila']
output = [convert(num) for num in num_list]
print(output)

如果你提到它到底是如何不起作用的,那会有帮助的。比如,有错误吗?输出是否不是您所期望的?请参阅以供参考。您在三个地方有两个非常明显的语法错误。这就是你要问的吗?如果没有的话,请等你把它们修好,我会撤消我的否决票。对不起,简德里亚,但我不同意你的意见。我添加了我正在使用的数据、预期输出和包含“明显语法错误”的代码,我知道这些错误存在,但我不知道如何修复它们(否则我想我不会问这个问题)。我认为这是if/else的错误用法。我发布了一些应该被复制的东西(数据),应该被修复的代码,以及预期的输出。如果您需要任何东西,请告诉我,但我认为这是一个最小的可复制示例。无论如何,您现在已经修复了一个语法错误,这很好。另一个是在
x[:-1]=“e”
x[:-1]=“o”
。equals
=
应该是一个双equals
=
。我认为这一个很接近,但如果将其分解为“经典”if-else格式并重新构建为三值格式,它将受益匪浅。