繁体   English   中英

一旦显示了相同的字母三遍,如何使此循环退出?

[英]How do I get this loop to quit once it has displayed the same letter three times?

所以我有这个完全搞砸的程序。 我想做的是,一旦显示了三个相同的字母,就切断循环。 到目前为止,我得到的是:

#Declaring letter variable
letters = str('AEIOU')

A = 0
E = 0
I = 0
O = 0
U = 0

for i in range(0, 9):
    print(random.choice(letters))
    if (random.choice(letters)) == ('A'):
        A + 1
        print(random.choice(letters))
        if A > 3:
            quit()

范围是任意的。 仅用于测试目的。 我也尝试过使用while循环,但是我也不知道如何杀死它。 它只是无限循环:

A = 0
import random
   while A < 3:
    print(random.choice(letters))
    if (random.choice(letters)) == ('A'):
        A + 1
        print(random.choice(letters))
        if A > 3:
            quit()

有什么建议么? 请不要讨厌太多...

您需要保存随机字符以进行比较,并保存递增的计数器:

import random
A = 0
while A < 3:
    a = random.choice(letters)
    if a == 'A':
        A += 1
        print(a)

如果要跟踪所有字母,请使用字典:

import random
letters = 'AEIOU'
d = {'A':0, 'E':0, 'I':0, 'O':0, 'U':0}
while 1:
    letter = random.choice(letters)
    d[letter] += 1
    if d[letter] > 2:
        break

您必须以某种方式计算字母-如TigerhawkT3所示,字典非常适​​合此目的。 我在这里使用defaultdict,它对所有条目都有一个默认值-因为我使用int作为默认值,所以默认值为零。 这有点棘手,但是使我们不必初始化数组,如果值的数量事先未知或很大,这可能会很烦人。

如果要退出循环,请使用“ break”-中断循环的当前级别-因此,对于嵌套循环,您需要多次中断。

import collections
import random
letters = str('AEIOU')
printed = collections.defaultdict(int)

while True:
    letter = random.choice(letters)
    print(letter)
    printed[letter] += 1
    if printed[letter] > 2:
        break

使用python集合库中的Counter,

import random
from collections import Counter
letters = str('AEIOU')

counter = Counter()
limit = 3
while 1:
    letter = random.choice(letters)
    print(letter)
    counter[letter] += 1
    if counter[letter] >= limit:
        break

计数器参考: https : //docs.python.org/2/library/collections.html#collections.Counter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM