



不知道怎麼合併QQ
有放在同一頁



結果跑不出來

#讀取資料
import pandas as pd
data = pd.read_csv('https://github.com/cwstedctw/NDHU-Python-Course/raw/main/student_info.txt', delimiter='\t')
data.to_excel('student_info.xlsx', index=False)
#判斷電話是否正確
def validate_phone_number(phone_number):
area_codes = {
"02": ["新北市", "基隆市", "桃園市龜山區迴龍"],
"03": ["桃園市", "新竹市", "新竹縣", "花蓮縣", "宜蘭縣"],
"037": ["苗栗縣", "新竹縣峨眉鄉部份"],
"04": ["臺中市", "苗栗縣卓蘭鎮", "南投縣仁愛鄉部分", "花蓮縣秀林鄉富世村關原地區"],
"049": ["南投縣", "彰化縣芬園鄉", "臺中市烏日區溪尾里、新社區福興里部份、不含仁愛鄉部分", "部分花蓮縣秀林鄉富世村關原地區"],
"05": ["嘉義市", "嘉義縣(六腳鄉及新港鄉部份地區)", "雲林縣"],
"06": ["臺南市", "澎湖縣"],
"07": ["高雄市"],
"08": ["屏東縣"],
"089": ["臺東縣"],
"082": ["金門縣"],
"0826": ["金門縣烏坵鄉"],
"0836": ["連江縣"]
}
area_code = phone_number[:2]
if area_code in area_codes:
return True, area_codes[area_code]
else:
return False, []
phone_number = input("Phone:")
valid, areas = validate_phone_number(phone_number)
if valid:
print("Pass")
else:
print("Fail")
#check student_no
import re
def validate_student_no(student_no):
if len(student_no) != 9:
return False
pattern = r"^[468][0-9]{3}([1-9]|1[0-6]|21|22|23)([0-2][0-9]|3[0-3])([0-9]{2})$"
if not re.match(pattern, student_no):
return False
identity_code = int(student_no[6])
if identity_code not in [0, 1, 2, 3]:
return False
return True
#check id
import re
def validate_id(id_number):
pattern = r'^[A-Z][12]\d{8}$'
if not re.match(pattern, id_number):
return False
letters = 'ABCDEFGHJKLMNPQRSTUVXYWZIO'
letter_value = {'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15, 'G': 16, 'H': 17, 'J': 18, 'K': 19, 'L': 20, 'M': 21,
'N': 22, 'P': 23, 'Q': 24, 'R': 25, 'S': 26, 'T': 27, 'U': 28, 'V': 29, 'X': 30, 'Y': 31, 'W': 32, 'Z': 33,
'I': 34, 'O': 35}
id_letters = id_number[:-1]
last_letter = id_number[-1]
region = id_letters[0]
gender = id_letters[1]
serial_number = id_letters[2:]
if region not in letters:
return False
if gender not in ['1', '2']:
return False
if not serial_number.isdigit() or len(serial_number) != 7:
return False
total = letter_value[region] // 10 + (letter_value[region] % 10) * 9
total += int(gender) * 8 + int(serial_number[0]) * 7 + int(serial_number[1]) * 6 + int(serial_number[2]) * 5
total += int(serial_number[3]) * 4 + int(serial_number[4]) * 3 + int(serial_number[5]) * 2 + int(serial_number[6])
check_digit = (10 - (total % 10)) % 10
if check_digit != int(last_letter):
return False
return True
id_number = input("ID: ")
if validate_id(id_number):
print("True")
else:
print("False")