这是我的代码,它采用文件中的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()
答案 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'
。