【发布时间】:2018-03-11 16:38:37
【问题描述】:
我是编程的绝对初学者。
我遇到的问题是无法将输入发送到“if 语句”开始的模行。
我的目标是,在输入三个输入后,只打印能被 5 整除的输入。 我收到一个错误:NameError: name 'i' is not defined。
我一直无法弄清楚如何解决这个问题,所以我请求帮助。代码如下:
bo=0
xo=0
zo=0
while True:
bo,xo,zo=[int(i)for i in input('Enter three numbers: ').split(" ")]
print([bo,xo,zo])
if i%5 == 0:
print([i])
else:
print('Sorry')
【问题讨论】:
-
显而易见的问题:
i仅在列表理解的范围内定义,在其他任何地方都不存在。更深层次的问题:你真正想要完成的是什么? -
bo=0; xo=0; zo=0是完全没有意义的陈述,顺便说一句 -
"只打印能被 5 整除的输入"。如果其中不止一个能被 5 整除,会发生什么?如果您正在考虑“它应该打印所有这些”,那么您将
i视为同时是一个值和多个值。如果i是一个列表,则不能对其进行取模;如果是整数,则只有一个值。 -
另外,如果您是绝对初学者,请不要使用列表理解。
-
@Makoto 我完全不同意。最好学习和理解基本流程控制、范围等概念等内容,这些内容显然被掩盖了。你永远不需要列表理解,你确实需要那些其他的东西。
标签: python python-3.5