使用扫描仪循环

时间:2014-04-11 02:31:46

标签: python loops

我有一个包含数字11 5 3 51的文件,我试图使用扫描仪读取文件,然后打印出该文件中的最小数字。但由于某种原因,当我运行下面的程序时,它一直说"最小的数字是7"大声笑和我喜欢的程序甚至从哪里获得7号?文件或我的程序中的任何地方都没有数字......这可能是什么问题?

from scanner import*


def main():
    s = Scanner("data.txt")
    items = ("data.txt")
    i = s.readint()
    ismallest = 0
    for i in range(0,len(items),1):
        if (items[i] < items[ismallest]):
            ismallest = i
    print ("the smallest number is", i)

main()

2 个答案:

答案 0 :(得分:0)

我在open而不是Scanner

中执行此操作的方法
content = [];
with open("input.txt") as f:
  content = f.readline().split()

ismallest = int(content[0])

for i in range(0,len(content),1):
  if (int(content[i]) < ismallest):
    ismallest = int(content[i])

print ("the smallest number is", ismallest)

编辑:好的,我认为如果您想使用Scanner,这应该有效:

s = Scanner("data.txt")
items = []
currentInt = s.readint()

while currentInt:
    items.append(currentInt)
    currentInt = s.readint()

ismallest = items[0]

for i in range(0,len(items),1):
  if (items[i]) < ismallest):
    ismallest = items[i]

print ("the smallest number is", ismallest)

答案 1 :(得分:0)

for循环中,您拨打for i in range...。您正在将i重新分配给range()

我在调用print i语句后立即复制了代码并添加了for,并打印出以下内容:

0
1
2
3
4
5
6
7
('the smallest number is', 7)

所以一开始就不考虑你的i = s.readint()。我建议重命名你的变量,你的错误应该是:)

此外,您只需阅读文件,拆分内容,然后使用max()min()内置功能进行打印。