【发布时间】:2021-01-13 12:02:05
【问题描述】:
所以我编写了一个代码来检查列表中有多少次是同一数字连续重复,当它得到它时,它将它们与用户输入的数字相除,然后将列表中的所有数字相加。这一切都有效,直到我得到更大的数字,然后它才开始不计算最后几个数字。
N = int(input())
Ai = input()
arr = [int(x) for x in Ai.split()]
c = 0
final = []
final2 = []
d = []
b = len(set(arr))
frozen_num = arr[0]
for i in range(0, len(arr) + b):
try:
if frozen_num == arr[0]:
arr.remove(arr[0])
c+=1
else:
final.append(c)
frozen_num = arr[0]
c = 0
except:
pass
final.append(c)
for l in final:
d.append(l/N)
final2 = map(int, d)
print(sum(final2))
输入:用户选择的分割数:“3”,数字列表[“5, 5, 5, 5, 4, 4, 4, 2, 2]
输出:2
但是当我给它一个输入时:20 38 66 66 66 66 66 66 66 66 13 13 13 13 13 13 13 13 13 13 13 43 43 43 43 43 43 22 22 22 98 98 98 98 98 98 77 7 7 7 7 7 7 7 7 7 7 7 82 82 82 82 26 47 41 38 38 38 57 57 57 79 79 79 79 79 79 79 79 79 79 79 79 79 79 98 98 98 98 98 98 98 98 13 67 67 67 67 80 80 80 80 80 50 50 50 50 50 50 50
它给了我一个输出:25 而不是 26。
因为它没有正确计算最后几个数字。
如果有人能解释这种行为,那将是非常有帮助的。
【问题讨论】:
-
您应该尝试使用
pass删除该 try/catch,然后看看会发生什么。 -
您能否排除
input()调用并对值进行硬编码?它应该排除输入和解析,并且应该是提取minimal reproducible example 的一部分。作为这里的新用户,也请带上tour并阅读How to Ask。 -
我硬编码了它不起作用的值。
标签: python list for-loop indexing