Python 3.5“;名称';i';没有定义;

Python 3.5“;名称';i';没有定义;,python,python-3.5,Python,Python 3.5,我是编程的绝对初学者 我遇到的问题是无法将输入发送到“if语句”开始的模行 我的目标是,输入三个输入后,只打印可被5整除的输入。 我收到一个错误:NameError:未定义名称“I” 我还没有弄明白如何解决这个问题,所以,我请求帮助。代码如下: 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]) i

我是编程的绝对初学者

我遇到的问题是无法将输入发送到“if语句”开始的模行


我的目标是,输入三个输入后,只打印可被5整除的输入。 我收到一个错误:NameError:未定义名称“I”

我还没有弄明白如何解决这个问题,所以,我请求帮助。代码如下:

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')
input('输入三个数字:')。split()接受以空格分隔的整数,并将它们转换为一个列表['30'、'40'、'2'] 将applyes int函数映射到['30','40','2']列表的所有元素,并将其转换为[30,40,2] 现在我已经准备好了我的列表,我只需要迭代列表,检查它的项是否可以被5整除,并根据除法后得到的余数打印数字或“对不起”

items = map(int,input('Enter three numbers:  ').split())
for item in items:
  if item%5 == 0:
    print (item)
  else:
    print ('sorry')
输出:

Enter three numbers:   30 40 2
30
40
sorry
input('输入三个数字:')。split()接受以空格分隔的整数,并将它们转换为一个列表['30'、'40'、'2'] 将applyes int函数映射到['30','40','2']列表的所有元素,并将其转换为[30,40,2] 现在我已经准备好了我的列表,我只需要迭代列表,检查它的项是否可以被5整除,并根据除法后得到的余数打印数字或“对不起”

items = map(int,input('Enter three numbers:  ').split())
for item in items:
  if item%5 == 0:
    print (item)
  else:
    print ('sorry')
输出:

Enter three numbers:   30 40 2
30
40
sorry

你在要求中说

我的目标是,在输入三个输入后,只需输入 应打印可被5整除的字符

然而,当一些东西不能被5整除时,你打印一些东西。。。“对不起”这个词

无论如何,这是我的答案:

[print(i) for i in input('Enter three numbers: ').split() if int(i) % 5 == 0]
如果可以被5整除,它将打印
i
。否则它不会打印任何内容

需要打印为列表吗

print([int(i) for i in input('Enter three numbers: ').split() if int(i) % 5 == 0])

你在要求中说

我的目标是,在输入三个输入后,只需输入 应打印可被5整除的字符

然而,当一些东西不能被5整除时,你打印一些东西。。。“对不起”这个词

无论如何,这是我的答案:

[print(i) for i in input('Enter three numbers: ').split() if int(i) % 5 == 0]
如果可以被5整除,它将打印
i
。否则它不会打印任何内容

需要打印为列表吗

print([int(i) for i in input('Enter three numbers: ').split() if int(i) % 5 == 0])


明显的问题是:
i
仅在列表理解的范围内定义,不存在于其他任何地方。更深层次的问题:你真正想要完成的是什么?
bo=0;xo=0;zo=0
是完全没有意义的语句,顺便说一句,“只打印可被5整除的输入”。如果其中不止一个可以被5整除,会发生什么?如果您认为“它应该打印所有的值”,那么您将
i
视为同时包含一个值和多个值。如果
i
是一个列表,则不能对其执行任何操作;如果它是一个整数,它只是一个值。而且,如果你是一个绝对的初学者,不要使用列表理解法。@Makoto我完全不同意。最好是学习和理解一些基本的流程控制、范围等概念,这些都被明显地掩盖了。你永远不需要列表理解,你确实需要其他东西。显而易见的问题是:
i
只在列表理解的范围内定义,不存在于其他任何地方。更深层次的问题:你真正想要完成的是什么?
bo=0;xo=0;zo=0
是完全没有意义的语句,顺便说一句,“只打印可被5整除的输入”。如果其中不止一个可以被5整除,会发生什么?如果您认为“它应该打印所有的值”,那么您将
i
视为同时包含一个值和多个值。如果
i
是一个列表,则不能对其执行任何操作;如果它是一个整数,它只是一个值。而且,如果你是一个绝对的初学者,不要使用列表理解法。@Makoto我完全不同意。最好是学习和理解一些基本的流程控制、范围等概念,这些都被明显地掩盖了。你永远不需要理解列表,你确实需要其他东西。你可能是对的,但你需要解释你的代码。输入三个输入后,它应该选择一个可以被5整除的一次并打印出来。输入三个数字:30 40 2-这里30,40,2是用户输入的输入,在下一行,30,40可被5整除,所以打印出来,2不可被5整除,所以打印出来。感谢@Makoto的提示,我正要编辑并编写代码解释。现在我有了评论的能力,我会写评论而不是写答案。在stackover flow中获得最初的50声誉是非常困难的。这是一个正确的方向,先生,但是输出应该作为列表打印。您可能是对的,但是您需要解释您的代码。输入三个输入后,它应该选择可被5整除的一次并打印出来。输入三个数字:30 40 2-这里30,40,2是用户输入的输入,下一行30,40可被5整除,所以打印,2不可被5整除,所以很抱歉打印。感谢@Makoto的提示,我正要编辑并编写代码解释。现在我有了评论的能力,我会写评论而不是写答案。在stackover flow中获得最初的50声誉是非常困难的。这是一个正确的方向,先生,但是输出应该作为一个列表打印。请解释为什么您将第一个解决方案的整个代码放在方括号中。这些解决方案很好,但我只需要理解您为什么这样做。在第二种解决方案中,“print”关键字被从方括号中删除了。为了使用列表理解,您需要使用某种iterable语法。您应该已经注意到,删除方括号会导致语法错误。从技术上讲,它不必是方括号,因为您也可以对元组使用
()
。使用
{}
将使用字典或设置理解,具体取决于您如何使用它。第一种解决方案