python输入时要进行用户名、密码校验,规则为用户名不为空且必须包含数字和字母,即以数字或者字母开头,后面可以带数字、字母或者_;用户密码不为空且仅包含数字和字母。 当用户名不重复时,用户名、密码信息保存在当前文件夹下的文件user.txt中,并弹出消息窗口提示“注册成功!”;否则,弹出消息窗口提示“该用户名已存在,请重新输入”。
时间: 2024-02-19 15:04:13 浏览: 70
Java正则表达式过滤出字母、数字和中文
好的,这是一个需要用户输入和文件读写操作的Python程序。可以使用正则表达式来判断用户名和密码是否符合规则,使用文件读写操作来判断用户名是否已经存在并保存用户信息。以下是一个可能的实现:
```python
import re
import os
import tkinter as tk
from tkinter import messagebox
def is_valid_username(username):
# 判断用户名是否符合规则
pattern = r'^[a-zA-Z0-9][a-zA-Z0-9_]*$'
return bool(re.match(pattern, username))
def is_valid_password(password):
# 判断密码是否符合规则
pattern = r'^[a-zA-Z0-9]+$'
return bool(re.match(pattern, password))
def register():
# 处理注册事件
username = username_entry.get()
password = password_entry.get()
if not is_valid_username(username):
messagebox.showerror('错误', '用户名不符合规则')
return
if not is_valid_password(password):
messagebox.showerror('错误', '密码不符合规则')
return
if os.path.exists('user.txt'):
with open('user.txt', 'r') as f:
for line in f:
if line.strip().split(':')[0] == username:
messagebox.showerror('错误', '该用户名已存在')
return
with open('user.txt', 'a') as f:
f.write(f'{username}:{password}\n')
messagebox.showinfo('提示', '注册成功!')
# 创建窗口和输入框
window = tk.Tk()
window.title('注册')
username_label = tk.Label(window, text='用户名:')
username_label.grid(row=0, column=0)
username_entry = tk.Entry(window)
username_entry.grid(row=0, column=1)
password_label = tk.Label(window, text='密码:')
password_label.grid(row=1, column=0)
password_entry = tk.Entry(window, show='*')
password_entry.grid(row=1, column=1)
register_button = tk.Button(window, text='注册', command=register)
register_button.grid(row=2, column=0, columnspan=2)
window.mainloop()
```
运行程序后,会弹出一个窗口,用户可以在其中输入用户名和密码,点击“注册”按钮来注册。如果用户名或密码不符合规则,会弹出错误提示窗口;如果用户名已经存在,也会弹出错误提示窗口;如果注册成功,会弹出提示窗口。用户信息会保存在当前文件夹下的user.txt文件中,每行格式为“用户名:密码”。
阅读全文