function imei(){
$nu = "3514512";
$num = rand(1111111,9999999);
$s = ''.$nu.''.$num.'';
// Add a zero check digit
$s = $s . '0';
$sum = 0;
// Find the last character
$i = strlen($s);
$odd_length = $i % 2;
// Iterate all digits backwards
while ($i-- > 0) {
// Add the current digit
$sum+=$s[$i];
// If the digit is even, add it again. Adjust for digits 10+ by subtracting 9.
($odd_length == ($i % 2)) ? ($s[$i] > 4) ? ($sum+=($s[$i] - 9)) : ($sum+=$s[$i]) : false;
}
$ime = (10 - ($sum % 10)) % 10;
$imei = ''.$nu.''.$num.''.$ime.'';
return $imei;
}
我需要将此函数转换为python,我尝试了很多,但始终失败,并出现许多错误。
我想到了这个:
def imei():
nu = "8613750"
num = random.randrange(1111111,9999999)
s = '' + nu + '' + num + ''
s = s + '0'
sum = 0
i = len(s)
odd_length = i % 2
while i > 0:
sum += s[i]
if (odd_length == (i % 2)): elif (s[i] > 4): elif (sum += (s[i] - 9)): (sum += s[i]) else false
i -= 1
ime = (10 - (sum % 10)) % 10
imei = '' + nu + '' + num + '' + ime + ''
return imei
错误:
文件“ functions.py”,第30行 if(odd_length ==(i%2)):elif(s [i]> 4):elif(sum + =(s [i]-9)):(sum + = s [i])else false >
建议编辑后
:def imei():
nu = '8613750'
num = str(random.randrange(1111111,9999999))
s = '' + nu + '' + num + ''
s = s + '0'
sum = 0
i = len(s) - 1
odd_length = i % 2
while i > 0:
sum += s[i]
if odd_length == i % 2:
if s[i] > 4:
sum += s[i] - 9
else:
sum += s[i]
i -= 1
ime = (10 - (sum % 10)) % 10
imei = '' + str(nu) + '' + str(num) + '' + str(ime) + ''
return imei
print(imei()) ^
答案 0 :(得分:0)
基于PHP代码,if
语句应如下所示:
if odd_length == i % 2:
if s[i] > 4:
sum += s[i] - 9
else:
sum += s[i]
此外,imei()
函数内的代码需要缩进。缩进在Python中不是可选的。
答案 1 :(得分:0)
我不确定逻辑,但是尝试这样的事情。
import random
def imei():
nu = "8613750"
num = random.randrange(1111111,9999999)
s = '' + str(nu) + '' + str(num) + ''
s = s + '0'
Sum = str(0)
i = len(s) - 1
odd_length = i % 2
while i > 0:
Sum += s[i]
if (odd_length == (i % 2)) or (s[i] > 4):
Sum += str(int(s[i]) - 0)
else :
Sum += s[i]
i -= 1
ime = (10 - (int(Sum) % 10)) % 10
Imei = '' + str(nu) + '' + str(num) + '' + str(ime) + ''
return Imei