1、从键盘输入一些字符,逐个把它们写到指定文件里,直到输入@为止。
法1:
filename = input("请输入文件名:\n")
arr = []
str = input("请输入字符串:\n")
with open(filename, 'w') as f:
while str != '@':
if '@' in str:
index = str.index('@')
arr.append(str[:index]) # 数组里面添加在@前面的元素
break
else:
arr.append(str + "\n")
str = input()
f.writelines(arr)
法2:
filename = input("请输入文件名:\n")
fo=open(filename,'w')
str = input("请输入字符串:\n")
while str != '@':
if '@' in str:
index = str.find('@')
fo.write(str[0:index])
break
else:
fo.write(str+"\n")
str = input()
fo.close()
2、产生十个由10个字符组成的随机密码,密码由26个大小写字母、10个数字和8个特殊字符组成,且首字符不能相同,保存在文件随机密码.txt中
import random
random.seed(0x1010)
password = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" \
"0123456789!@#$%^*"
ls = []
excludes = ""
pwd = ""
while len(ls) < 10:
for i in range(10):
pwd += password[random.randint(0, len(password) - 1)]
if pwd[0] in excludes: # 如果首字母在excludes里
pwd = pwd.lstrip(pwd[0]) # 就删掉首字符
pwd += password[random.randint(0, len(password) - 1)] # 然后再补回来一个字符
continue
ls.append(pwd)
excludes += pwd[0]
pwd = '' # 刷新pwd
fo = open('随机密码.txt', 'w')
fo.write("\n".join(ls))
fo.close()
3、使用字典和列表型变量完成某课程的考勤记录统计,某班有100名同学,名单由考生目录下文件Name.txt给出(每行一个学生姓名),某课程第一次考勤数据由考生目录下文件name.csv给出(每行一个出勤学生姓名)。请输出第一次缺勤同学的名单。
with open("name.csv", "r", encoding = "utf8") as fo:
str1 = fo.readlines() # 列表形式,里面存放字符串,例如['索栋广\n', '陶开\n', '阳岩\n',...]
ls = []
for line in str1:
line = line.replace("\n", "")
ls.append(line.split()) # 到堂人数;split将字符串分隔之后存放在列表中,split里填逗号也行,空格也行,主要是为了分成列表
# 即列表ls里又添加了列表,嵌套列表,如[['索栋广'], ['陶开'], ['阳岩']]
with open("Name.txt", "r", encoding = "utf8") as fi:
str2 = fi.readlines()
lsAll = []
for line in str2:
line = line.replace("\n", "")
lsAll.append(line) # 总人数
for first in ls:
if first[0] in lsAll: # 因为是嵌套列表,所以要用first[0]
lsAll.remove(first[0])
print("第一次缺勤的同学有:")
n = 1
for first in lsAll:
if n % 10 == 0:
print(first, end = ",") # 每十个人名一行
print()
elif n >= len(lsAll):
print(first, end = "") # 最后一个人名儿时去掉逗号
else:
print(first, end = ",") # 用逗号分隔人名儿
n += 1
且注意保存csv文件时要用utf-8的格式,如下:
txt存放总人名,csv存放到勤人名。txt减去csv就是没到勤的人。
遍历两个文件,把各自的人名存到各自列表里,再判断csv的列表里的元素项是否在txt的列表里,在就删除。最后剩下来的即是缺勤人。