我的for循环不起作用

时间:2016-04-27 18:02:39

标签: python function for-loop input

  • 我写的程序是指用户输入的整数,然后乘以1-10的范围,因此用户输入x 1-10。但是,当我运行我的程序时,发生错误,说'bool'不可迭代.. 我是新编码所以请轻松一下<3

    继承我的代码:

    然后是错误:

  • Traceback(最近一次通话): 文件“”,第1行,in 环() 文件“C:/Users/chemg/AppData/Local/Programs/Python/Python35-32/loop1.py”,第6行,循环 对于范围内的数字(1,10): TypeError:'bool'对象不可迭代

  • 用户输入值

  • 后会发生此错误

5 个答案:

答案 0 :(得分:4)

让我们打破这一行

for numbers in number in range(1,10):
range(1,10) => 1..10
number in range(1,10) => True/False, but what is 'number'? 0? So, 'False'
numbers in number in range(1,10) => Error!!! There are no 'numbers' in 'False'

也许你打算这样做?

for number in range(1,10):
    # do something

稍后您尝试打印4件事时也会出错,但format()中只指定了3件。

print("Here it is {0}:\n {1} x {2} = {3}".format(number,add,name))

您将name设为{2},这样就会打印出类似

的内容
Here it is 1: 7 x James = ??

所以,你可以通过

解决这个问题
add=int(input("Enter number and i will display the times table: "))
for number in range(1,10):
    print("{0} x {1} = {2}".format(add, number, add*number))

答案 1 :(得分:1)

在你的for循环中,数字是单个变量,而不是可迭代的,并且它是一个无效的语法,所以用下面的代码替换你的代码 无需编写数字= 0,

def loop():
    name=input("Enter name: ").capitalize()
    print("Hey {0}".format(name))
    add=int(input("Enter number and i will display the times table: "))
    for number in range(1,11): # last value is not included so to iterate up to 10 write 11
        product= add*number
        print(" {1} x {2} = {3} \n ".format(number,add,product))

答案 2 :(得分:1)

您也可能不希望将乘法结果存储到'add'中,因为对于循环的每次迭代,'add'将是上一次迭代的值而不是用户输入的值不是生成乘法表。事实上,以下所有结果都是0:

for number in range(10):
    print('{0} * {1}'.format(add, number))
    add = add*number
    print("Result:{0}".format(add))

在您的cli中使用范围(1,10)进行测试,就像在代码中一样,所以它从1开始而不是0,您将看到结果不是乘法表:

for number in range(1,10):
    print('{0} * {1}'.format(add, number))
    add = add * number
    print(add)

以下是包含所有更改的完整版本:

def loop():
    name=input("Enter name: ").capitalize()
    print("Hey {0}".format(name))
    add=int(input("Enter number and i will display the times table: "))
    for number in range(1,10):
        product = add * number
        print("Here it is {0}:\n {1} x {2} = {3}".format(name,add,number,product))

答案 3 :(得分:1)

  • 好吧我好像已经做到了。它可能就是答案,但这就是我想出来的

    def loop():
        numbers=int(input("Enter a number: "))
        add=numbers
        for number in range(1,900000000000):
            numbers= add*number
            print("{0} x {2} = {1}".format(add,numbers,number))
    

答案 4 :(得分:0)

number in range(1,10)正在评估False(因为0不在range(1,10),因此for numbers in False会导致问题。

您可能只想要for number in range(1,10):