我试图让我的代码经过一些数学运算后弹出。求和的文件只是单独行上的数字列表。你能不能给我一些指导,因为我很难过。
修改 我试图从主函数到Checker函数的转换正常工作。我还需要切片帮助。从文件导入的数字如下:
136895201785
155616717815
164615189165
100175288051
254871145153
所以在我的Checker
功能中,我想从左到右一起添加奇数。例如,对于第一个数字,我想添加1
,6
,9
,2
,1
和8
。
完整代码:
def checker(line):
flag == False
odds = line[1 + 3+ 5+ 9+ 11]
part2 = odds * 3
evens = part2 + line[2 + 4 +6 +8 +10 +12]
part3 = evens * mod10
last = part3 - 10
if last == line[-1]:
return flag == True
def main():
iven = input("what is the file name ")
with open(iven) as f:
for line in f:
line = line.strip()
if len(line) > 60:
print("line is too long")
elif len(line) < 10:
print("line is too short")
elif not line.isdigit():
print("contains a non-digit")
elif check(line) == False:
print(line, "error")
答案 0 :(得分:0)
得到奇数:
odds = line[1::2]
和evens:
evens = part2 + line[::2]
答案 1 :(得分:0)
不幸的是,checker
功能的任何部分都不起作用。看来你可能需要这样的东西:
def check_sums(line):
numbers = [int(ch) for ch in line] # convert text string to a series of integers
odds = sum(numbers[1::2]) # sum of the odd-index numbers
evens = sum(numbers[::2]) # sum of the even-index numbers
if numbers[-1] == (odds * 3 + evens) % 10:
return True
else:
return False
numbers[1::2]
说&#34;从1开始到numbers
切片直到第2步&#34;结束,而numbers[::2]
说&#34;得到切片{ {1}}从开始到结束,步骤2&#34;。 (有关详细说明,请参阅this question或documentation。)
请注意,模数的运算符为numbers
。我认为你正在尝试用x % 10
做什么。在您的原始代码中,您还减去10(evens * mod10
),但这没有任何意义,因此我省略了该步骤。
这会为您提到的输入行返回以下内容:
last = part3 - 10
您的print(check_sums('136895201785')) # >>> False
print(check_sums('155616717815')) # >>> True
print(check_sums('164615189165')) # >>> True
print(check_sums('100175288051')) # >>> False
print(check_sums('254871145153')) # >>> False
功能没有问题,只有当您将其命名为main
时,它才会将该功能称为check
。