![](/img/trans.png)
[英]How do I create a loop in python that will break once user inputs quit?
[英]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.