【发布时间】:2020-11-19 02:01:06
【问题描述】:
有人可以评价这段代码的效率吗?
它应该模仿一个电话号码的 IMEI 验证器,就像一个有趣的项目。
如果您不知道应该将每个第二个数字乘以 2,然后将所有数字加在一起,除了最后一个它总是添加的数字之外,例如:
123456789
1 + (4) + 3 + (8) + 5 + (1 + 2) + 7 + (1 + 6) = 38
38 + 9 = 47
然后它会以 10 为模,如果没有余数,则为有效数字,如果有余数,则无效。
我仍然有一些打印语句用于测试,忽略这些语句,我怎样才能使我的代码在更少的行中或使其尽可能高效。
我一直在做一些编程,但很难弄清楚程序的效率。
任何帮助将不胜感激!
n = input("Enter number: ")
og = n.split()
new = []
sum_new = 0
def create_new():
global n
global new
temp_n = 0
for i in range (len(n)):
#test_bool = i+1 % 2 == 0 #i < len(n) - 1 and
#print(test_bool)
# print(i+1)
if i < len(n) - 1 and (i+1) % 2 == 0:
#print("test")
temp_n = str(int(n[i]) * 2)
if len(temp_n) > 1:
new.append(int(temp_n[0]))
new.append(int(temp_n[1]))
#print("doubled double! " + str(new[i]) + " " + str(new[i+1]))
else:
new.append(int(temp_n))
#print("doubled! " + str(new[i]))
else:
new.append(int(n[i]))
# print("not doubled " + str(new[i]))
create_new()
def find_sum():
global sum_new
for i in range (len(new)-1):
sum_new += new[i]
sum_new += new[len(new)-1]
find_sum()
#print(new)
#print (sum_new)
if sum_new % 10 == 0:
print("Valid.")
else:
print("Invalid.")
【问题讨论】:
标签: python coding-style memory-efficient imei