试图通过elif调用函数并返回一个标志

时间:2014-12-10 21:48:05

标签: python list function if-statement

我试图让我的代码经过一些数学运算后弹出。求和的文件只是单独行上的数字列表。你能不能给我一些指导,因为我很难过。

修改 我试图从主函数到Checker函数的转换正常工作。我还需要切片帮助。从文件导入的数字如下:

136895201785
155616717815
164615189165
100175288051
254871145153

所以在我的Checker功能中,我想从左到右一起添加奇数。例如,对于第一个数字,我想添加169218

完整代码:

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")

2 个答案:

答案 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 questiondocumentation。)

请注意,模数的运算符为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