检查输入仅包含字母/空格 - 返回TypeError

时间:2017-03-22 17:49:47

标签: python

我正在尝试创建一个加密程序,我陷入了第一道障碍。我基本上想检查输入只包含字母或空格,如果没有,则返回错误信息。 当我运行它时,它说TypeError,'bool'对象不可迭代。不确定这意味着什么,或者如何纠正我的代码。我在Python 3.5中。

sentence = input("Enter a short sentence: ").lower()

for x in sentence:
    if all(x.isalpha() or x==''):
        continue
    else:
        print("Error: please only enter letters and spaces. ")

3 个答案:

答案 0 :(得分:0)

这可能是您正在寻找的内容:

sentence = input("Enter a short sentence: ").lower()

for x in sentence:
    if x.isalpha() or x==' ':
        continue
    else:
        print("Error: please only enter letters and spaces. ")
        break

你试图在布尔条件下执行`all()(如果x是alpha或空)。

答案 1 :(得分:0)

all内置检查迭代的每个元素,以查看它是否为True。在您的情况下,您已经传递了一个布尔值(x.isalpha() or x==' ')。你需要给all一个可迭代的东西。您可以使用列表解析来执行此操作,例如:

sentence = input("Enter a short sentence: ").lower()
result = all([x.isalpha() or x == ' ' for x in sentence])

然后,您可以使用result中的值来决定下一步做什么

答案 2 :(得分:0)

您没有正确使用 var earth = new WE.map('world', { zoom: 1, altitude: 7000000, minAltitude: 3500000, maxAltitude: 20000000, tilting: false, atmosphere: false, sky: true, dragging: true }); 。该函数需要一些 iterable ,就像列表或元组一样,而不是一个布尔值,这就是你提供的。

all

所以,你可以这样做:

>>> all([True, True, False])
False
>>> all([True, True, True])
True