python-3.x - 一条线解决
问题描述
问题来了。两个外来物种在交战中的奇怪通讯被截获。美国宇航局的顶级语言学家已经确定这些外星人使用了一种奇怪的编号系统。它们具有各种数值的符号,它们只是将给定数字中符号的所有值相加来计算数字。NASA 的语言学家为您提供了下表的符号及其数值。因为他们有很多这样的数字要计算,所以他们希望你编写一个可以用来自动执行此任务的函数。值 1024 598 121 42 Sym 因此 a!ya!U!NaU 表示值 1095(请参见下表了解说明) 数值 OccurrencesTotal ValueRunning Total 1024 598 121 42 0 x 10240 1 × 598 598 3 x 121363 3 x 42 = 126 598 961 1087 1093 1095 alienNumbers 接受一个字符串参数s,并返回由 rite a function s 表示的整数值。由于外星人只知道这些字符,你可以假设 s 中没有字符在这个集合之外: (T,y, !,a, N, U Callenge: 试着让这个函数的整个主体只有一行长 >>>alienNumbers ("a!ya!U!NaU") 1095 >>> alienNumbers ("aaaUUU") 129
我已经解决了,如下图
def alienNumbers(s):
final = []
new_final = []
T_count = 0
y_count = 0
count = 0
a_count = 0
N_count = 0
U_count = 0
for i in s:
final.append(i)
for k in final:
if k == "T":
T_count += 1
if k == "y":
y_count += 1
if k == "!":
count += 1
if k == "a":
a_count += 1
if k == "N":
N_count += 1
if k == "U":
U_count += 1
for j in final:
if j not in new_final:
new_final.append(j)
for m in new_final:
if m == "T":
value1 = 1024 * T_count
if m == "y":
value2 = 598 * y_count
if m == "!":
value3 = 121 * count
if m == "a":
value4 = 42 * a_count
if m == "N":
value5 = 6 * N_count
if m == "U":
value6 = 1 * U_count
total = value1 + value2 + value3 + value4 + value5 + value6
print(total)
但显然这个问题可以在 python 中使用 .count() 函数在一行代码中解决,我似乎无法弄清楚。任何人都可以帮忙吗?
解决方案
通过将字符映射到一个字典来创建一个值列表,其中键是字符,值是它们的编码值,然后使用sum
:
def alienNumbers(s): print(sum(map(lambda x: {"T" : 1024, "y" : 598, "!" : 121, "a" : 42, "N" : 6, "U" : 1}[x], list(s))))
假设外面没有字符,这将起作用T,y, !,a, N, U
。我假设在您的问题中您将(
字符添加为错字。
编辑
忘了补充一点,如果你想接受任何字符并且只计算词汇表中的字符,你可以将该函数更改为:
def alienNumbers(s): print(sum(map(lambda x: {"T" : 1024, "y" : 598, "!" : 121, "a" : 42, "N" : 6, "U" : 1}.get(x, 0), list(s))))
使用dict.get
0 作为默认值不会抛出KeyError
,也不会改变总金额。
推荐阅读
- font-awesome - 字体真棒只有两个图标
- c++ - 是否有必要使用 .str() 将 match.suffix() 存储在 regex_search 中?
- ios - 间歇性崩溃:尝试从第 0 部分中删除第 0 行,该部分在更新前仅包含 0 行
- css - 面板外的 SVG 图像被裁剪
- wordpress - WordPress 中的 Alt 属性为空
- php - 如何将 JSON 转换为 php 字符串
- jsfiddle - 如何通过console.log在jsfiddle上解析html
- python - 如何将文本小部件的内容插入到 sqlite 数据库中
- javascript - 关于使用 fetch() 和 .then() 构建反应状态的问题
- tfs - 如何检索工作项 ID?在 WorkItems 列表 API 中使用它