python - 编写一个接收字符串并计算元音的while循环?
问题描述
编写一个 while 循环,它接受一个字符串并计算元音。使用字符串“愿原力与你同在”。打印结果。(答案:8)
对此的任何帮助将不胜感激!我一直想出一个连续的循环。它必须使用一个while循环并打印元音的数量(8)。谢谢!!
count = 0
vowels = ['a', 'e', 'i', 'o', 'u']
s = "May the force be with you."
while i in s:
if i in vowels:
count += 1
print(count)
解决方案
该声明:
while i in s:
不按你的想法做。如果是while
a for
,它将一次遍历一个字符的字符串,并且可能会起作用。
但是,表达式 i in s
(即while
语句中的内容)仅检查是否i
是s
“集合”中的事物之一,并为您提供真或假。它不会遍历 集合。i
s
如果i
已设置为某个值,则 while 循环将无限执行或从不执行,具体取决于i
. 如果i
未绑定到值,您将收到运行时错误。
作为一种解决方案,您可以使用以下内容迭代字符串中的字符(来自实际成绩单):
>>> str = "pax"
>>> for ch in str:
... print(ch)
...
p
a
x
等效while
版本是:
>>> str = "pax"
>>> idx = 0 # OR: idx, slen = 0, len(str)
>>> while idx < len(str): # while idx < slen:
... print str[idx]
... idx += 1
...
p
a
x
尽管for
对于此类任务,该变体通常被认为更 Pythonic。
此外,您可以使用 来检测字符是否是一组字符中的一个in
,例如在以下脚本中:
>>> str = "pax"
>>> for ch in str:
... if ch in "ABCabc":
... print(f"{ch} is either a, b, or c")
...
a is either a, b, or c
因此,您应该能够结合该for/while
循环和if
语句来计算元音并输出它(使用print
)。
请特别注意我用于元音检查的字符串,它还包含大写元音。请记住,尽管您的规范可能只使用拉丁元音,但今天的 Unicode 世界不会原谅这种疏忽。例如,请参见此处。
推荐阅读
- vim - 如何在 CentOS 8 上获取 ncurses 库的路径?
- python - 根据实际 cumsum 的结果跳过行或在条件上设置固定值时的 Cumsum 列
- python - lxml 命名空间多次定义
- python - 是否可以像使用 requirements.txt 一样从文件中导入所有包?
- haskell - 在 Haskell 中制作小写字符串列表
- reactjs - react js中的简单纸牌游戏
- python - 使用内联 for 循环与普通 for 循环求和
- c# - 如何使用 Blazor 服务器制作复杂的文件下载功能?
- bots - Telegram bot,是否可以确保图像不是从图库中挑选的
- javascript - 如何在使用 Typescript 的反应测试库中使用 setState 测试反应组件