纯符号字符串检测

新手上路,请多包涵

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

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

由于似乎没有专门测试符号的方法,我决定先测试字母,然后测试数字,如果两者都为负数,则应该打印文本。

这是我的代码:

 while True:

  symbols = input("Enter symbol string:")

  if symbols == symbols.isalpha():
    print (symbols.isalpha())
  elif not a == a.isalpha():
    print (a.isalpha())
    break

原文由 Chrysoula Kaloumenou 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 553
1 个回答

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

 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')

上面的代码首先创建一个符号列表,您希望确保字符串是从名为 valid_symbols 中创建的。接下来,它创建一个名为 has_only_symbols 的变量,其值 True 开始。接下来它开始检查输入字符串中的每个字符是否存在于 valid_symbols 中。如果它遇到一个无效的字符,那么它会将 has_only_symbols 的值更改为 False 并跳出 for 循环(无需检查字符串的其余部分)。循环完成后,它会检查 has_only_symbolsTrue 还是 False 并做相应的事情。

另一方面,您的某些代码没有按照您的想法进行:

 if symbols == symbols.isalpha():
    ...

will test if symbols , your input string, is equal to the result of symbols.isalpha() which returns a boolean True or False .你的意思可能只是:

 if symbols.isalpha():
    ...

elif 声明也很奇怪。您已经开始引用一些名为 a 的变量,但是您没有在发布的代码中的任何地方定义它。从您的描述和代码看来,您打算使用此 elif 语句也参考 symbols 并调用 isdigit 方法:

 if symbols.isalpha():
    ...
elif symbols.isdigit():
    ...
else:
    ...

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

原文由 Farmer Joe 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题