ISBN号写入文件

时间:2014-04-15 04:52:59

标签: python

这是我的代码,它采用文件中的ISBN号,然后使用两个部分和并检查它是否可以被11整除以确保它是有效的。我的问题是我应该将我刚刚测试的代码写入文件,然后是有效还是无效。我真的不明白文件,这就是我要求帮助的原因。写入文件的文本应该如下所示:

0-1315-2447-X有效
0-89237-010-9无效

def main():
    in_file = open('isbn.txt','r')
    for line in in_file:
        print(line)
        s1 = list(line)
    in_file.close()
    hyphen = '-'
    for i in s1:
        if i == hyphen:
            s1.remove (hyphen)
    print (s1)
    partial_sums(s1)

def partial_sums(s1):
    lst1 =[]
    sum = 0
    for i in range(len(s1)):
        if i == (len(s1) -1) and s1[i] == "X":
            sum = sum + 10
        else:
            sum = sum + int(s1[i])
        lst1.append(sum)
    print(lst1)
    sum_of_s1(lst1)

def sum_of_s1(s2):
    lst2 = []
    sum = 0
    for i in s2:
        sum += i
        lst2.append(sum)
    print(lst2)
    check(lst2[-1])
def check(value):
    if value % 11 ==0:
        print("valid")
    else:
        print("invalid")

main()

2 个答案:

答案 0 :(得分:0)

假设您的代码逻辑正确,为了将输出写入文件,您需要从输入文件中读取行,即s1方法中可用的check 。由于check方法是您确定它是有效还是无效的方法。

所以在check方法中执行:

def check(value, s1):
    with open('output', 'a') as op_file:
    op_file.write(s1)
    op_file.write(' ')
    if value % 11 ==0:
        op_file.write('valid\n')
    else:
        op_file.write('invalid\n')
    op_file.close()

为了让check方法获得对s1的访问权限,您必须将s1作为第二个参数从函数partial_sums传递到sum_of_s1。从那里到check

其他注意事项:

  • 建议不要将sum用作变量名。 sum是库函数的名称。

  • main功能中,您可以替换代码:

    hyphen = '-'
    for i in s1:
        if i == hyphen:
            s1.remove (hyphen)
    

    with:

    s1 = s1.replace('-', '')
    

答案 1 :(得分:0)

x = open('isbn.txt', 'r+').read().split()
num = []
for k in x:
    if k.isdigit() == True:
        num.append(k)

num = int(''.join(num))
if (num % 11 == 0):
    x.write('Valid\n')
else:
    x.write('Invalid\n')

打开文件,将所有数字附加到列表中。然后查看这些组合的整数值是否可被11整除。如果是,则打印'valid'。否则,请打印'invalid'