Python等价于C语言中的程序

Python等价于C语言中的程序,python,string,loops,sum,iteration,Python,String,Loops,Sum,Iteration,我的目标是将以下用C编写的代码翻译成python,这样我就可以在一串数字上计算循环。最初,目标的取值范围为0到9,在每次迭代时收集输入,同时进行乘法,并对整个范围求和。最后,确定除以11后的余数 int checksum(char *str) { int i, sum = 0; for (i=0; i<9; i++) { sum+= (str[i] - '0') * (i + 1); } return sum % 11; } 代码的直接但不

我的目标是将以下用C编写的代码翻译成python,这样我就可以在一串数字上计算循环。最初,目标的取值范围为0到9,在每次迭代时收集输入,同时进行乘法,并对整个范围求和。最后,确定除以11后的余数

int checksum(char *str) {
    int i, sum = 0;
    for (i=0; i<9; i++) {
        sum+= (str[i] - '0') * (i + 1);
    }
    return sum % 11;
}

代码的直接但不太惯用的翻译如下所示,请注意,我重命名了一些变量,以避免与Python的内置函数发生冲突:

def checksum(s):
    c = 0
    for i in range(9):
        c += int(s[i]) * (i + 1)
    return c % 11
另一个更具Python风格的选项是使用生成器表达式而不是显式循环:

def checksum(s):
    return sum(int(e) * i for i, e in enumerate(s[:9], 1)) % 11

如果您自己用C编写,并且理解它,那么将其翻译成Python应该不会有问题。去看报纸。你想看看函数和循环,我在一个python研究小组,其中一个成员对这个问题的建议是用我不熟悉的C语言提交的。我的回答是,‘虽然我很欣赏这个建议,但我不熟悉C语言。给我一天时间把这个建议解释成Python。’我陷入了僵局,在这里寻求帮助。我最初的想法是,构造一个循环,迭代范围,要求每一步输入,执行数学运算,求和,然后确定剩余部分。这就是我的过程想法。如果你要走这条路,那么:返回sumintval*idx for idx,枚举中的val[:9],1%11@JonClements在值1中启动枚举似乎是个好主意。s[:9]部分我不太确定,我喜欢我的版本适用于长度不是9的字符串。但是,如果输入包含除数字以外的字符,则intval部分将失败如果可以假设,则您的建议是正确的,我将9放入,因为这是OPs for循环的整个范围-当然可以删除它,或者只使其定义校验和,n=无,然后使其枚举[:n],1或其他内容。OP还希望通过一串数字对循环求值,所以我会坚持使用int使其显式,并进行验证,否则类似于ord'!'-作战需求文件“0”将对结果产生奇怪的影响。只是我的2p。假设输入是一个整数,在整个范围内,0到9。哦,是的,int的使用将包括在内。谢谢你提醒我。