基本上我想尝试制作一个系统,当你输入你的身份证号码时,再用相同的号码再做一次,它应该显示一个错误。我试图在网上寻找一些解决方案,但似乎找不到真正有用的解决方案。这是我到目前为止所做的代码:
import sys
N = 0
while N < 2:
ID = input("Please input ID code ")
if (len(ID)) == 6:
with open('ID1.txt', 'a') as file:
file.write(ID + ' ')
file.write('\n')
N += 1
print("ID length: Valid")
else:
print("ID Code: Error")
sys.exit()
有没有人对如何做有任何想法?
答案 0 :(得分:0)
使用您的代码,最简单的方法是加载文本文件,通过换行符拆分为ID,然后查看ID是否在此新列表中:
N = 1
while N <= 2:
input_id = input('Type your ID: ')
assert input_id == 6, 'Invalid ID length'
with open('IDs.txt', 'r+') as ids:
id_list = ids.read().split('\n')
if input_id in id_list:
print('This ID already exists')
N += 1
continue
else:
ids.write('\n'+input_id)
print('valid ID')
break
但更简洁的方法是使用JSON文件。这样,您可以直接加载列表,并且格式化错误的可能性会降低
import json
N = 1
while N <= 2:
file = open('IDs.json', 'r')
ids = json.load(file)
file.close()
input_id= input('enter your ID:')
assert input_id == 6, 'Invalid ID length'
if int(input_id) in ids:
print('This ID already exists')
N += 1
continue
else:
ids.append(int(input_id))
json.dumps('IDs.json', ids)
print('ID accepted')
break
答案 1 :(得分:0)
如果没有代码验证文件中是否存在ID,请在文件中输入2个唯一ID
$rounds = $this->Rounds
->find()
->contain(['RoundsUsers' => function (\Cake\ORM\Query $query) {
return $query
->select(function (\Cake\ORM\Query $query) {
return [
'RoundsUsers.round_id',
'number' => $query->func()->count('RoundsUsers.round_id')
];
})
->group(['RoundsUsers.round_id']);
}]
);