我正在写一个程序,在这个程序中,用户在列表中输入值,直到想要结束它,程序会告诉用户他们输入的最长的数字。例如,如果用户输入7,7,6,6,4,则最终将得到输出:您的最长连线是3。因为连续输入了3次7。
到目前为止,我已经有了这个,它似乎不想结束当前的运行,所以如果我输入7,7,7,6,6,6,5,4,它会告诉我最长的连线是7,就像它继续从7开始的连线一样。这就是我所拥有的:
mylist = []
run = 1
currentrun = 1
number = input('enter a number: ')
mylist.append(number)
while number != 'end' :
number = input ('enter a number: ')
mylist.append(number)
for i in range (len(mylist)):
if mylist[i] == mylist[i-1] and mylist[i] == mylist[i+1] :
currentrun = currentrun + 1
else:
currentrun = 0
print (currentrun)
if currentrun > run:
run = currentrun
print (mylist)
print ('Your longest run was' ,run)任何帮助都是非常感谢的。
发布于 2015-03-04 02:54:20
假设您有一个列表,比如[7, 7, 7, 6, 6, 6, 6, 5, 4, 6, 7],您可以使用groupby()函数来计算重复次数,然后在最后打印最大次数。
from itertools import groupby
a = [7, 7, 7, 6, 6, 6, 6, 5, 4, 6, 7]
lst = []
for n,c in groupby(a):
num,count = n,sum(1 for i in c)
lst.append((num,count))
maxx = max([y for x,y in lst])
print 'Your longest run was {}'.format(maxx)在这种情况下,它返回4,因为数字6连续重复了4次
发布于 2015-03-04 03:44:27
>>> from itertools import groupby
>>> input_iter = iter(lambda: input('enter a number: '), 'end')
>>> max(sum(1 for x in v) for k,v in groupby(input_iter))
enter a number: 7
enter a number: 7
enter a number: 7
enter a number: 6
enter a number: 6
enter a number: 4
enter a number: end
3发布于 2015-03-04 02:57:58
这是你所描述的如何做到的一个冗长的版本。中途我意识到我是在Python16上运行它,所以它是向后兼容的!
a = None # stores the last number seen
b = 0 # stores the count of the last number
result = [0, 0] # number, count result array
for c in "7,7,7,6,6,6,6,5,4".split(','): # split string into array of
# just our numbers
c = int(c) # change the character into a bast ten int
if c != a: # check current number against last
a = c # if different than last, remember current number as last
b = 1 # start over counting at one
else: # if current number is same as last
b = b + 1 # increment counter
if b > result[1]: result = a, b # if counter higher than highest
# previous count, store the
# current number and count
print(("value: %i, count: %i" % result)) # print resulting number, count输出:
value: 6, count 4如果您有任何问题,请随时发表意见。
https://stackoverflow.com/questions/28839607
复制相似问题