[英]How can I implement a function to print out for all similar strings?
所以我寫了這段代碼,它返回總時間parse_time
和總距離parse_int
,這是我的代碼。
def getDigits(s):
answer = []
for char in s.split(";"):
k = ""
for split_s in char:
if split_s.isdigit():
k += split_s
if k:
answer.append(k)
return answer
def parse_time(s):
l = getDigits(s)
r = (int(l[0])//100)*60
t = ((int(l[0])//100)*100)
s = int(l[0])-t
return r+s
print(parse_time(s='cycling;time:1,49;distance:2'))
def parse_dist(s):
l = getDigits(s)
return l[1]+ 'km'
print(parse_dist(s='cycling;time:1,49;distance:2'))
def jogging_average(activities: list[str]):
現在我只想知道如何jogging_average(activities: list[str])
函數jogging_average(activities: list[str])
來返回每個有慢跑的字符串的parse_dist
和parse_time
。 我怎樣才能做到這一點??
順便說一下,所有的輸入都將來自activities: list
,它是
activities = [
"cycling;time:1,49;distance:2",
"jogging;time:40,11;distance:6",
"swimming;time:1,49;distance:1.2",
"jogging;time:36,25;distance:5.3",
"hiking;time:106,01;distance:8.29"
]
會為你循環排序嗎?
for activity in activities:
if "jogging" in activity:
print(parse_dist(activity))
print(parse_time(activity))
使用實際的數據結構很容易。 查看Activity
from typing import NamedTuple,List
from statistics import mean
class Activity(NamedTuple):
type: str
time: int
distance: float
def get_digits(s):
answer = []
for char in s.split(";"):
k = ""
for split_s in char:
if split_s.isdigit():
k += split_s
if k:
answer.append(k)
return answer
def parse_time(l):
l = get_digits(l)
r = (int(l[0])//100)*60
t = ((int(l[0])//100)*100)
s = int(l[0])-t
return r+s
def parse(test:str) -> Activity:
fields = test.split(';')
type = fields[0]
time = parse_time(fields[1][fields[1].find(':')+1:])
distance = float(fields[2][fields[2].find(':')+1:])
return Activity(type,time,distance)
def get_avg_time(lst:List[Activity],activity_type:str) -> float:
return mean(act.time for act in lst if act.type == activity_type)
activities = [
"cycling;time:1,49;distance:2",
"jogging;time:40,11;distance:6",
"swimming;time:1,49;distance:1.2",
"jogging;time:36,25;distance:5.3",
"hiking;time:106,01;distance:8.29"
]
activities: List[Activity] = [parse(act) for act in activities]
activity_type = 'jogging'
avg_time: float = get_avg_time(activities,activity_type)
print(f'Avg activity time of {activity_type} is {avg_time}')
輸出
Avg activity time of jogging is 2298
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.