【发布时间】:2020-11-25 15:23:03
【问题描述】:
我正在做一个项目,我的代码应该从文本文件中获取行,并读取表格中每个值的第一个数字。然后它应该应用本福德定律来查看值 1-9 的第一位数字的频率。现在我正在获取这些值并将它们放入一个名为“行”的列表中,然后转到一个范围为 (1,10) 的 for 循环,其值为 n 以检查值 1-9,然后在其中嵌套另一个 for 循环遍历行中的所有元素,然后在该语句中嵌套一个 if 语句,检查行中元素的第一个数字是否与 n 相同。如果每次出现时都将数字放入一个名为 number_counter 的列表中。我稍后使用另一个 for 循环将它们转换为频率,但是检查行中元素的第一个数字和 n 是否相等的 if 语句永远不会运行,即使我每次都打印出 n 和第一个数字以查看它们是否曾经匹配过,他们做了多次。我很困惑为什么它没有触发。由于我仍在从事该项目,因此代码远未清理和组织。
lines = []
file = open('data1.csv', 'r')
f = file.readlines()
for line in f:
lines.append(line.strip())
file.close()
r = open('analysis_results.txt', 'w')
number_counter = []
k = 0
for n in range(1,10):
for x in lines:
k = x[0]
if k == n:
number_counter.append(k)
print(number_counter)
frequencies = []
for n in range(1,10):
p = 0
print(n)
for x in number_counter:
if x == n:
p += 1
p = p // len(lines)
frequencies.append(p)
print(frequencies)
print(k)
【问题讨论】:
-
这不是类型问题,是吗? How to compare string and integer in python?
标签: python if-statement