【发布时间】:2022-11-13 16:43:38
【问题描述】:
我是 Python 新手,但这是我需要帮助才能获得输出的模式
输入
输入将是包含字符串的单行。
输出
输出应包含字符串中出现的数字的总和和平均值。注:平均值保留两位小数。
解释
例如,如果给定的字符串是“我 25 岁零 10 个月大”,则数字为 25、10。您的代码应打印新的数字的总和 (35) 和数字的平均值 (17.5)线。
测试用例:
- 输入
我今年 25 岁零 10 个月
输出
35 17.5
上面的测试用例非常简单明了,当你试图解决这样的问题时,我的问题就来了。
- 输入
一个girl64 35spaces numb6rs
输出
05 66.66
所以基本上我要问的是,你如何提取字符串之间存在的数字。使 (164) 不会变成 (1,6,4)
- 输入
1次3 %次4
输出
8 2.67
这是另一种情况,其中 (1,3) 不应像测试用例 2 中那样被提取为 13。这正是我需要帮助的情况
我编写的代码对我来说只是获取不属于单词本身的数字,这对案例 1 很有效:
sentence=input().split() op=[] for i in sentence: if i.isdigit(): op.append(int(i)) else: for j in i: if j.isdigit(): op.append(int(j)) print(sum(op)) avg=sum(op)/len(op) print(round(avg,2))我在寻找线索时发现了这一点,这适用于测试用例 1 和 2,但对于第三个测试用例仍然失败,因为无论位置如何,它都将来自同一个单词的数字连接起来。
a=input() a=a.split() t=[int(''.join([j for j in k if j.isdigit()])) for k in a if any(m.isdigit() for m in k)] print(t) if len(t)!=0: print(sum(t)) print(sum(t)/len(t)) else: print(sum(t)) print(sum(t))我无法理解上面的代码,但希望有人能澄清我并建议我如何解决这个问题
【问题讨论】:
标签: python-3.x string