Python 把第一个世纪列在数字列表中

Python 把第一个世纪列在数字列表中,python,python-2.7,Python,Python 2.7,我收到了这个解决方案,但我很难理解 我是一个初学者 代码必须打印出数字列表中的第一个世纪,如果没有世纪,则打印“无”。我不知道他为什么用I>=lenline 我个人不会想到用这种方式解决它,那么有人能解释一下它在做什么吗 这是我正在运行程序的文件 1 12 99 101 65 110 import sys lines = sys.stdin.read().split() i = 0 while i < len(lines) and int(lines[i]) < 100:

我收到了这个解决方案,但我很难理解 我是一个初学者

代码必须打印出数字列表中的第一个世纪,如果没有世纪,则打印“无”。我不知道他为什么用I>=lenline

我个人不会想到用这种方式解决它,那么有人能解释一下它在做什么吗

这是我正在运行程序的文件

1
12
99
101
65
110


import sys

lines = sys.stdin.read().split()

i = 0
while i < len(lines) and int(lines[i]) < 100:
    i = i + 1

if i >= len(lines):
    print 'none'
else:
    print lines[i]

通过索引对列表进行迭代并不是一种python式的方式,尤其是在完全没有必要的情况下。您可以使用以下语句:

nums = [1, 12, 99, 101, 65, 110]
for i in nums:
    if i >= 100:
        print(i)
        break
else:
    print("none")

在您的代码中,您已将变量行指定给包含输入中整数的列表,即1、12、19、…、110。对列表调用len方法将返回该列表中的项数。具体来说,在您的行列表中使用len方法将返回案例6中输入的整数数


行i>=lenlines将返回是否已将变量i迭代为大于整数输入数的整数。换句话说,如果输入数大于100,它将返回是否已通过所有输入数检查。正如你在文章中所说,如果没有语法,这个程序应该返回none。如果你的迭代器i超过了整数输入的数量,这意味着你的输入没有一个大于100,你的程序应该返回none。但是,我想指出的是,使用while比使用for逐项遍历变量行更节省空间。

欢迎使用SO。请花点时间阅读和阅读该页面上的其他链接。这不是一个讨论论坛或教程服务。可能尝试:-不幸的是它不支持导入系统-可能重构该部分。如果行计数器i大于行数lenlines,则找不到匹配值。顺便说一句,如果你有一个像007这样的数字,这个解决方案就行不通了。。。。请记住,if语句不在循环本身内部。
if i >= len(lines):  # if i > len(lines) you cannot print the lines[i] because that would be an out of range Exception that's why there is this condition to print None
    print 'none'
else:
    print lines[i]  # if i < len(lines) that means the call of lines[i] will give a value and thus printing it can occur successfully
for line in lines:
    print(line)