我在部分作业中很难过。
[基本上,我有用户输入2Darray中x人的一些数据(姓名,姓氏,身份证,薪水)。ID是由13个数字组成的字符串,它们是ddmmYYYY XXXXXX(x对于该部分任务并不重要)。我需要从列表中的每个数组中提取ID,然后将它们放在单独的数组中(我已经这样做了),并使其成为有效的日期格式(dd.mm.YYYY)。如何以这种方式编辑字符串?
到目前为止是我的代码:
counter = 0
workersList = []
totalSalaries = 0
datesOfBirth = []
#1
workersNumber = int(input("How many? "))
#2
for i in range (workersNumber):
workersList.append(input("Name, Last name, ID and salary ").split(" "))
datesOfBirth.append(workersList[i][2])
#3
if len(workersList[i][2])==13:
#print("Good ID number")
totalSalaries = totalSalaries + float(workersList[i][3])
#4
avgSalaries = totalSalaries/workersNumber
counter+=1
#5
print("List of workers: ")
for j in range (workersNumber):
print(workersList[j])
print(datesOfBirth)
#6
#7
#8
我知道如何更改整个字符串,但是我不知道用户将输入什么,因此我需要将此字符串用第二,第四和第七个字符后的点号分隔。我该怎么做?我会轻而易举地剩下的。
非常简单,只需替换步骤2中的行
datesOfBirth.append(workersList[i][2])
with
datesOfBirth.append('.'.join([workersList[i][2][0:2],
workersList[i][2][2:4],
workersList[i][2][4:8]]))
'。'是您的分隔符,我们正在对元素进行切片
ddmmyyyy[0:2] [2:4] [4:8]
切片+格式化是一种非常简单的方法:
worker_data = [
input("Name, Last name, ID and salary ").split()
for _ in range(int(input("How many? ")))
]
worker_dobs = [
f"{id[0:2]}.{id[2:4]}.{id[4:8]}"
for [_first, _last, id, _salary] in worker_data
]
这是假设数据有效;如果您需要处理无效数据,我建议您使用进行适当验证的函数替换input("Name, Last name, ID and salary ").split()
,以便在进入worker_data
列表之前将其清除。
一旦有了数据列表,就很容易从中导出其他有用的值;建立清单时,您不需要这样做。例如:
from statistics import mean
average_salary = mean(
float(salary)
for [_first, _last, _id, salary] in worker_data
)
number_workers = len(worker_data)
等