我正在处理一个文本文件,其中填充了由空格分隔的数字字符串。我试图找到文件中数值在1到1,000,000之间的数值。我目前有这只打印数字。有关如何查找数量的任何建议?查找一定范围内的数字量
for line in file:
for number in line:
if "0" < number < "1000000":
print(number)
我正在处理一个文本文件,其中填充了由空格分隔的数字字符串。我试图找到文件中数值在1到1,000,000之间的数值。我目前有这只打印数字。有关如何查找数量的任何建议?查找一定范围内的数字量
for line in file:
for number in line:
if "0" < number < "1000000":
print(number)
file_object = open("numbers", "r")
count = 0
for line in file_object:
for number in line.split():
if int(number) > 10 and int(number) < 100:
count = count + 1
print(count)
谢谢你的帮助! –
我讨厌再次遇到问题,但是您是否知道是否有办法在不重新进入的情况下循环多个范围。即0-100,101-200等 –
当然,只需复制if块,将“if”改为“elif”(表示:else if)并更改范围。 (请参阅:https://www.tutorialspoint.com/python/python_if_else.htm) –
首先,投你number
变量这样一个int:int(number)
和使用整数,而不是字符串比较。像这样:if 0 < int(number) < 10000
。
此外,添加一个像建议的一些意见的计数器。下面是完整的代码:
counter = 0
for line in file:
for number in line:
if 0 < number < 1000000:
counter += 1
谢谢你的帮助! –
你的做法是不正确自:
number
是一条线的每一个字符。所以这些只能是数字,字母等。不是多位数字;和但是,您可以轻松地计算这个像:
sum(0 < int(n) < 1000000 for line in file for n in line.split() if n.strip())
的int(..)
蒙上了字符串等价物(积分)号。因此'100'
转换为100
。如果我们想要执行数字比较,这是必需的。
split()
用于获取文件中的数字。它会查找空白等,并分割这些部分。
如果数字格式良好,if n.strip()
可以是可选的。但是,这可能是有问题的:例如,如果你有拖尾新线等
谢谢你的帮助! –
如果文件只有数字,你可以使用类似:
with open(path, 'r') as f:
print sum(1 for x in f.read().split() if 10000 > int(x) > 0)
这将在整个文件中的数数无需单独计算每条线。
谢谢你的帮助! –
提示:在循环前初始化一个计数变量,然后在找到符合条件的数字时继续向该变量添加一个。 –
有一个变量,你每次比赛时增加 – litelite
这是*不正确的方法。 –