Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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在一个变量值不断增加的循环中,是否有可能生成一个一行程序?_Python_Variables_For Loop - Fatal编程技术网

python在一个变量值不断增加的循环中,是否有可能生成一个一行程序?

python在一个变量值不断增加的循环中,是否有可能生成一个一行程序?,python,variables,for-loop,Python,Variables,For Loop,我很抱歉,如果我开始问一个重复的问题,但没有发现这个问题。如果问题可以以不同的方式提出,请随意建议或编辑 目标是将任何基于n的整数转换为十进制整数 from string import digits, ascii_uppercase def convert_n_to_10(number, n): alphabet = digits + ascii_uppercase result_10 = 0 for i in range(len(str(number))):

我很抱歉,如果我开始问一个重复的问题,但没有发现这个问题。如果问题可以以不同的方式提出,请随意建议或编辑

目标是将任何基于n的整数转换为十进制整数

from string import digits, ascii_uppercase


def convert_n_to_10(number, n):
    alphabet = digits + ascii_uppercase
    result_10 = 0
    for i in range(len(str(number))):
        result_10 = result_10 * n + alphabet.index(str(number)[i])
    return result_10
问题是,在结果变量的值不断增加的情况下,是否有可能从这个循环中生成一个线性

for i in range(len(str(number))):
    result_10 = result_10 * n + alphabet.index(str(number)[i])
多谢各位

return sum([pow(n, len(x)-i) * alphabet.index(x[i])
           for i in range(len(x))])
计算数字中已经是字符串的每个位置的n的适当幂;无需转换和乘以数字值

更妙的是,正如JosephSible提醒我们的那样:

return int(x, n)

这是一个直截了当的决定

    result_10 = 0
    for i in range(len(str(number))):
        result_10 = result_10 * n + alphabet.index(str(number)[i])
    return result_10
为此:

    return reduce(lambda result_10, i: result_10 * n + alphabet.index(str(number)[i]),
                  range(len(str(number))),
                  0)
请注意,我只是简单地复制并粘贴了计算表达式、iterable和初始值的主要部分,甚至没有读取它们


在Python 3中,您需要从functools模块导入reduce。

x是在哪里定义的?为什么数字是一个未使用的参数?为什么不使用int函数代替convert_n_to_10?它已经完成了您要做的事情。@JosephSible:不,int假设字符已经在10进制中。所需的例程也将基数作为参数。考虑把21101从三进制转换成十进制。忘了吧。没错!我的错误。检查reduce。似乎我们应该将总和除以n才能得到正确的答案。return intx,n完美。正如JosephSible所写。计算是100%正确的,谢谢你的通知。因为这个问题是关于使用以前的计算结果改变动态变量的,所以我需要你的答案。非常感谢。