python结课作业_Python课程第三天作业

一、统计⽂件数据中出现的的所有字符与该字符出现的个数(不区分⼤⼩写,标点与空格也算)

⽂件内容: hello friend, can you speak English!

# 结果:

{

'h': 1,

'e': 4,

'l': 3,

'o': 2,

' ': 5,

...

}

代码如下:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

#统计⽂件数据中出现的的所有字符与该字符出现的个数

#字符串方式

char_dict1 = {}

with open('test.txt', 'r', encoding='utf-8')as f:

f_str = f.read()

for k1 in f_str:

char_dict1[k1.lower()] = f_str.lower().count(k1.lower())

print(char_dict1)

#seek方式

char_dict2 = {}

with open('test.txt', 'r', encoding='utf-8')as f2:

for k2 in f2.read():

f2.seek(0,0)

char_dict2 [k2.lower()] = f2.read().lower().count(k2.lower())

print(char_dict2 )

#列表方式

char_dict3={}

char_lsit=list()

with open('test.txt', 'rt',encoding='utf-8')as f:

for k5 in f.read():

char_lsit.append(k5.lower())

f.seek(0, 0)

for k6 in f.read():

if k6 in char_lsit:

char_dict3[k6]=char_lsit.count(k6)

print(char_dict3)

二、 统计⽂件中⼤写字⺟、⼩写字⺟、数字及其他字符出现的次数

# ⽂件内容: Abc123,-+XYZopq000.?/

# 结果:

{

'⼤写字⺟': 4,

'⼩写字⺟': 5,

'数字': 6,

'其他字符': 6

}

代码如下:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

#统计⽂件中⼤写字⺟、⼩写字⺟、数字及其他字符出现的次数

capital_count=0

lowercase_count=0

number_count=0

special_characters_count=0

with open('test2.txt','rt',encoding='utf-8') as f:

string=f.read()

for i in string:

if (ord(i) >= 33 and (ord(i)<= 47)) or ((ord(i) >= 58 and (ord(i)<= 64) )):

special_characters_count += 1

elif ord(i) >= 48 and (ord(i)<= 57):

number_count += 1

elif ord(i) >= 65 and (ord(i)<= 90):

capital_count += 1

elif ord(i) >= 97 and (ord(i)<= 122):

lowercase_count += 1

string_count = {'大写字母':capital_count, '小写字母':lowercase_count, '数字':number_count, '特殊字符':special_characters_count}

print(string_count)

三、登录注册系统

# 需求分析:

1.可以循环登录注册,输⼊1代表选择登录功能,输⼊2代表注册功能,输⼊0代表退出,其他输⼊代表

输⼊有误,重输

2.⽤户的账号密码信息存放在usr.txt⽂件中,保证⽤户注册成功后,重启系统,⽤户信息仍然保存

3.登录在账号验证通过才输⼊密码验证登录,账号验证三次失败⾃动进⼊注册功能,登录三次验证失败

⾃动退出系统

4.第⼀次注册,⽂件写⼊ 账号:密码 信息,再次注册追加写⼊ |账号:密码 信息

代码如下:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import time

white_user_set=[]

black_user_set=[]

user_list=[]

white_userDB='userDB'

black_userDB='user_blackDB'

with open(black_userDB, 'r+',encoding='utf-8') as black_f:

for black_user in black_f.readlines():

black_user = black_user.strip("\n")

black_user_set.append(black_user)

with open(white_userDB, 'r+') as white_f:

for file in white_f.readlines():

file = file.strip("\n")

user_field,passwd_field,remarks_field= file.split('|')

name1_field, user=user_field.split(':')

name2_field, passwd = passwd_field.split(':')

name3_field, remarks = remarks_field.split(':')

white_user_set.append({name1_field:user,name2_field:passwd,name3_field:remarks})

user_list.append(user)

print(white_user_set)

def mod_info(file_name,old_str,new_str):

mod_date=''

with open(file_name,'r+',encoding='utf-8') as f:

for line in f:

line = line.replace(old_str,new_str)

mod_date += line

with open(file_name, 'w', encoding='utf-8') as f1:

f1.writelines(mod_date)

#用户注册函数

def user_register():

count=0

while True:

count+=1

register_name = input('创建用户名:')

register_passwd = input('创建密码:')

register_passwd1 = input('创建密码:')

user_remarks = input('输入您的备注信息,默认为空:')

if user_remarks == '':

user_remarks = 'null'

if register_passwd == register_passwd1:

if register_name in user_list:

print('用户已存在,请重新创建')

else:

user_information=register_name+':'+register_passwd+':'+user_remarks

print(user_information)

print(type(user_information))

with open(white_userDB,'a+') as f:

f.write('\n')

f.write(user_information)

print('恭喜您,用户创建成功!!!')

return 0

else:

if count == 3:

print('失败次数超过上限,程序退出')

exit(3)

print('两次密码不一致,请重新创建2')

#用户登录函数

def user_login():

Flag = True

user_failures = 0

all_failures = 0

while Flag:

login_name = input('请输入用户名:')

login_passwd = input('输入密码:')

print(login_name,login_passwd)

if login_name in black_user_set:

print('该用户已被锁定,请联系您的管理员!')

exit(3)

if login_name in user_list:

for subscript,line in enumerate(white_user_set):

if (login_name == line['name']) and (login_passwd == line['passwd']):

print('登录成功')

print('正在登录。请稍后')

time.sleep(1)

print('')

print('='*30)

print('欢迎来到 250 世界')

print('='*30)

Flag = False

break

for subscript,line in enumerate(white_user_set):

if (login_name == line['name']) and (login_passwd != line['passwd']):

user_failures += 1

all_failures += 1

if (user_failures == 3):

print('验证失败次数过多,用户被锁定')

with open(black_userDB,'a+') as f:

f.write(login_name+'\n')

exit(2)

print('用户名或密码不正确,登录失败,请重新登录 2 ')

break

else:

print('用户名或密码不正确,登录失败,请重新登录 3 ')

all_failures += 1

if all_failures == 6:

print('失败次数过多,请确认后再登录 4')

exit(1)

#用户信息修改函数

def user_info_mod(user_name,user_passwd,remarks):

user_login

print('''

1.修改密码

2.修改备注信息

''')

info=input('请根据提示,选择您要修改的用户信息')

if info == '1':

confirm_password = input('请输入您当前的密码:')

new_password = input('请输入您要修改的密码:')

if confirm_password == user_passwd:

print('您输入的当前密码有误,请程序输入!')

else:

for subscript, line in enumerate(white_user_set):

if (user_name == line['name']):

line[passwd]=new_password

mod_info(white_userDB, confirm_password, new_password )

elif info == 2:

new_remarks=input('请输入您要修改的备注:')

for subscript, line in enumerate(white_user_set):

if (user_name == line['name']):

line[remarks]=new_remarks

mod_info(white_userDB, line[remarks], new_remarks)

else:

print('无效的输入,请重新输入!')

#主函数

def main():

while True:

count=0

print('1 注册用户:')

print('2 登录系统:')

print('3 修改备注信息:')

user_operation=input('请选择您的操作:')

print(type(user_operation))

if user_operation == '1' or user_operation == '3':

user_register()

break

elif user_operation == '2':

user_login()

break

else:

count+=1

if count == 3:

print('失败次数过多,请确认后再登录')

exit(3)

print('非法的输入,请重试')

if __name__ == '__main__':

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值