【问题标题】:average character in a given word给定单词的平均字符
【发布时间】:2021-07-10 03:21:42
【问题描述】:

我是 python 新手,我正在尝试编写一个程序来计算给定单词中的平均字符。

这是作业:编写一个程序,接受一个单词(一个字母序列)并返回平均字符。

并且程序应该按以下顺序运行: 将字符串转换为字符列表。 使用 ord() 函数将字符转换为数字。 计算数字的平均值。 使用 chr() 将数字转换回字符。

我想我应该接受一个输入,然后使用 ord() 函数找到整数值,然后找到这些整数的平均值。

这是我目前所写的:

word = input('Enter a word here:')
list(word)
print(list(word))
for char in range(len(word)):
    print(ord(word[char]))

该程序可以将单词转换为字符列表并显示这些整数值。但是现在,我迷路了,不知道去哪里找到这些数字的平均值。有人能指出我正确的方向吗,比如一个解释如何做的网站或类似的东西。

【问题讨论】:

  • 提示:您通常如何手动找到一堆数字的平均值?如果您可以考虑将采取的步骤,然后对其进行编码,您将解决它。另外:为什么不将这些数字添加到列表中,而不是 print(),以帮助您使用它们?
  • @G.Anderson 要找到一个数字的平均值,我会将它们相加并除以数字的个数。但是,嗯,把这些数字放在一个列表中,我不太确定该怎么做。是否可以执行类似的操作: numbers = (ord(word[char])) list(numbers) 这样我就可以获取整数然后将它们放入列表中?
  • 请参阅the python list documentation 了解更多关于使用列表来完成此任务的信息。基本上,声明一个空列表变量,然后在循环中将append() 数字添加到列表中,然后对保存在列表对象中的数字进行操作

标签: python python-3.x


【解决方案1】:

我的理解是这样的:

word = input('Enter a word here:')
sum_word = 0
for character in word:
  sum_word += ord(character)
average = chr(sum_word//len(word))
print(average)

刚刚对 average 有疑问,但如果不对请告诉我,我会更改它

【讨论】:

  • 这个工作,所以谢谢你,但如果你能告诉我它是如何工作的,我真的很感激!我不想只知道答案,但也知道过程:D
  • 是的。首先,word 是一个字符串变量,如果您阅读 Python 文档,它是一个可迭代对象,因此您可以使用 for 循环迭代它的每个字符。然后你需要得到它与ord等价的数字,把它们都加到sum_ord中。最后你得到average 取一个简单的平均值并用// 四舍五入,它的字符表示用chr
【解决方案2】:

Pythonic 方式是使用列表推导或映射。

word = 'hello, world'

通过映射,您告诉函数mapord 应用于每个字符:

chr(sum(map(ord, word)) // len(word))
#'`'

使用列表推导,您可以自己应用函数:

chr(sum(ord(x) for x in word) // len(word))
#'`'

映射解决方案的速度大约是理解的两倍。

【讨论】:

    【解决方案3】:

    我想这就是你想要的:

    word = 'hello'
    chars = [ord(c) for c in word]
    avg = sum(chars)//len(chars)
    avg_char = chr(avg)
    

    对于'hello',平均字符是'j'。

    【讨论】:

    • 这段代码也可以,但如果你能向我解释一下,那就太好了。
    • 当然,请为我的答案投票。 word = 'hello' 之后的 3 行执行此操作:1)列表理解以获取 word 中每个 c 的 ord(c),即将 word 中的每个字符放入列表中。 2)平均值是正常的数学运算:总计/计数。使用 sum() 对列表中的所有数字求和,使用 len() 查找列表的长度。 3) 使用 chr() 将该平均数转换为字符。
    猜你喜欢
    • 2013-03-11
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 2016-12-06
    相关资源
    最近更新 更多