ISBN号写入fi

2024-03-28 23:26:30 发布

您现在位置: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()

Tags: 文件代码inforifmaindefline
2条回答

假设代码的逻辑是正确的,为了将输出写到一个文件中,您需要有从输入文件中读取的行,即check方法中可用的s1。因为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函数中,可以替换代码:

    ^{pr2}$

    有:

    s1 = s1.replace('-', '')
    
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'。在

相关问题 更多 >