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)
符号有点模糊,但这里有一个策略:
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_symbols是True或False并相应地执行某些操作。
另外,您的某些代码没有按照您的想法进行操作:
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!@#将无法通过两个测试并被打印。你想要一些更独特的东西,比如我写的上面的代码。