循环遍历并在最后一个索引==')时停止

时间:2019-09-04 11:55:55

标签: python python-3.x

我目前正在尝试执行类似计算器的操作,其中无效输入会产生错误。但是,我遇到错误,他们说我输入SSLSocketFactory时索引不在列表中。因此,我想到的是,如果列表的最后一个索引为==')',则可以循环执行。出于此练习的目的,列表中的每个项目都用一个空格分隔。 split()

我无法导入任何库

SSLSocketFactory factory = getSSLConfig();
OkHttpClient okHttpClient = new OkHttpClient.Builder()
                    .sslSocketFactory(factory, (X509TrustManager) ((AdditionalKeyStoresSSLSocketFactory) factory).TrustManager[0])
                    .build();
Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(serverBaseUrl)
                    .client(okHttpClient)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();

预期输出是程序应该( 2 + 7 ),而不是遇到错误。

1 个答案:

答案 0 :(得分:0)

这里:

for n, token in enumerate(exprlist):
    if exprlist[n] == '(' and exprlist[n+1] == ')':

到达最后一项时,n是最后一项的索引,因此n+1确实没有任何内容。

这里的pythonic解决方案是use zip()生成(item, next_item)对的序列:

for token, next_token in zip(exprlist, exprlist[1:]):
    if token == '(' and next_token == ')':
        # etc