Python 需要在骰子卷中打印最常见的长度5,s和6,s
我实际上有三个任务,其中两个已经完成,现在我真的被最后一个任务困住了Python 需要在骰子卷中打印最常见的长度5,s和6,s,python,Python,我实际上有三个任务,其中两个已经完成,现在我真的被最后一个任务困住了 检查两个连续的66(工作) 6辊最长顺序(工作) 要检查5和6的最频繁长度的数字。例如,在5533661656中,656是最长的,但只有一个长度为3的序列,但答案应该是2,因为55,66在那里。同样,45611613656124566的长度为2和3,两次出现。现在程序应该打印最长的长度,答案应该是3 这是代码 trial = int(randint(1, 500)) print(trial) result = '' for
trial = int(randint(1, 500))
print(trial)
result = ''
for i in range(trial):
init_num = str(randint(1, 6))
result += init_num
print(result)
def double_six(result):
last_dice = '0'
counter = 0
for i in range(trial):
if result[i] == '6' and last_dice == '6':
counter += 1
last_dice = '0'
else:
last_dice = result[i]
return counter
print(double_six(result))
def no_six(result):
s = str(result).split('6')
l = 0
for i in s:
if l < len(i):
l = len(i)
if len(i) > l:
l = i
return (l)
print(no_six(result))
#
# def lucky_series(result)
试用期=int(randint(1500))
印刷品(试用版)
结果=“”
对于范围内的i(试验):
init_num=str(randint(1,6))
结果+=init_num
打印(结果)
def双_六(结果):
最后一个骰子='0'
计数器=0
对于范围内的i(试验):
如果结果[i]=“6”和最后一个骰子==“6”:
计数器+=1
最后一个骰子='0'
其他:
最后一个骰子=结果[i]
返回计数器
打印(双_六(结果))
def no_六(结果):
s=str(结果)。拆分('6')
l=0
对于s中的i:
如果ll:
l=i
返回(l)
打印(第六号(结果))
#
#def lucky_系列(结果)
这可能可以用正则表达式简化,但我不知道如何:这是我的解决办法
result = str(322226555453442214634442111625423563466312534536531251541656625421252464254536351661534211622365625514522561513611151366313122241413512123614521)
将数字1到4替换为空格,然后将其拆分为一个列表
result = result.replace('1',' ').replace('2',' ').replace('3',' ').replace('4',' ').split()
#['6555', '5', '6', '6', '5', '56', '66', '5', '5', '65', '5', '5', '6566', '5', '5', '6', '5', '5', '6', '5', '66', '5', '6', '656', '55', '5', '56', '5', '6', '5', '66', '5', '6', '5']
然后找到该列表中每个5-6项的长度,然后将其存储到另一个列表中:
lengths = [len(a) for a in result] #list-comprehension
#[4, 1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 3, 2, 1, 2, 1, 1, 1, 2, 1, 1, 1]
使用list.Count从2开始计算相似长度的项目及其频率
total = [[i , lengths.count(i)] for i in range(1000)[2:] if lengths.count(i) != 0]
#[[2, 7], [3, 1], [4, 2]]
然后使用max()查找频率最高的长度(根据第二项获取max)
功能:
def most56(result):
result = result.replace('1',' ').replace('2',' ').replace('3',' ').replace('4',' ').split()
lengths = [len(a) for a in result]
total = [ [i, lengths.count(i)] for i in range(1000)[2:] if lengths.count(i) != 0]
if total:
most = max(total, key = lambda x: x[1])
return most[0]
return 'no long numbers'
上面的函数不工作“max()arg是一个空序列”是错误。我修复了错误,包括结尾缺少的字符串。split()。现在应该可以用了,谢谢你,伙计。。。请解释“范围(1000)[2:]”。感谢[2:]是一种切片表示法。它告诉范围从2开始,直到结束。对于这个“355452134111343663236636”数字,结果是3。这是不对的
def most56(result):
result = result.replace('1',' ').replace('2',' ').replace('3',' ').replace('4',' ').split()
lengths = [len(a) for a in result]
total = [ [i, lengths.count(i)] for i in range(1000)[2:] if lengths.count(i) != 0]
if total:
most = max(total, key = lambda x: x[1])
return most[0]
return 'no long numbers'