仅符号字符串检测

Chr*_*nou 5 python symbols user-input debug-symbols python-3.x

我对 Python(以及一般的编程)相当陌生,所以我经常遇到非常愚蠢的问题,例如下面的问题。

我想要的是重复检查用户输入中的所有字符是否都是符号。当输入这样的输入时,我想打印该字符串。

由于似乎没有一种方法可以专门测试符号,因此我决定首先测试字母,然后测试数字,如果两者都为负数,那么它应该打印文本。

这是我的代码:

while True:

  symbols = input("Enter symbol string:")

  if symbols == symbols.isalpha():
    print (symbols.isalpha())
  elif not a == a.isalpha():
    print (a.isalpha())
    break
Run Code Online (Sandbox Code Playgroud)

Far*_*Joe 2

符号有点模糊,但这里有一个策略:

symbols = input("Enter symbol string:")
valid_symbols = "!@#$%^&*()_-+={}[]"

has_only_symbols = True

for ch in symbols:
    if ch not in symbols:
        has_only_symbols = False
        break

if has_only_symbols:
    print('Input only had symbols')
else:
    print('Input had something other than just symbols')
Run Code Online (Sandbox Code Playgroud)

上面的代码首先创建一个符号列表,您要确保该字符串是从调用中创建的valid_symbols。接下来,它创建一个名为 的变量,该变量首先保存has_only_symbols值为。True接下来,它开始检查输入字符串中的每个字符是否存在于 中valid_symbols。如果它遇到无效字符,则会更改has_only_symbolsto的值False并退出 for 循环(无需检查字符串的其余部分)。循环完成后,它检查是否has_only_symbolsTrueFalse并相应地执行某些操作。

另外,您的某些代码没有按照您的想法进行操作:

if symbols == symbols.isalpha():
    ...
Run Code Online (Sandbox Code Playgroud)

将测试symbols您的输入字符串是否等于symbols.isalpha()返回布尔值True或的结果False。你的意思可能只是:

if symbols.isalpha():
    ...
Run Code Online (Sandbox Code Playgroud)

这个elif说法也很奇怪。您已开始引用某个名为的变量a,但您没有在发布的代码中的任何位置定义它。从您的描述和代码看来,您似乎想让此elif语句也引用symbols并调用该isdigit方法:

if symbols.isalpha():
    ...
elif symbols.isdigit():
    ...
else:
    ...
Run Code Online (Sandbox Code Playgroud)

然而,这在逻辑上并不完整,因为混合字母、数字和符号的字符串会漏掉。例如,abc123!@#将无法通过两个测试并被打印。你想要一些更独特的东西,比如我写的上面的代码。