仅符号字符串检测



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

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

由于似乎没有办法专门测试符号,我决定先测试字母,然后再测试数字,如果它们都显示为负数,那么它应该打印文本。

这是我的代码:

while True:
symbols = input("Enter symbol string:")
if symbols == symbols.isalpha():
print (symbols.isalpha())
elif not a == a.isalpha():
print (a.isalpha())
break

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

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():
...

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

if symbols.isalpha():
...

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

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

但是,这在逻辑上并不完整,因为带有混合字母,数字和符号的字符串会溜走。 例如,abc123!@#将无法通过两项测试并被打印出来。 你想要一些更独特的东西,比如我写的上面的代码。

这就是我解决它的方式。

import re
def start():
global count
for letter in SYMBOLS:
if re.search(reg,SYMBOLS):
count=count+1#just to count how many exist
global S#if you want to store the result
S=letter

else:
print(letter,': is not a symbol')

count = 0
SYMBOLS= input('Enter textn')#INPUT
reg =('[@_!#$£%^&*()<>?/|}{~:]')#SYMBOL SEARCH
start()

Farmer Joe 代码的略微更新版本。包括更好的输入处理。

symbols = input("Enter any characters:")
valid_symbols = "!@#$%^&*()_-+={}[]"
if symbols == '':
print("None of characters have been entered. Please try again")
else:
for ch in symbols:
if symbols.isalnum() is True:
print('No symbols have been detected in the input')
break
else:
if ch not in valid_symbols:
print('There are symbols mixed with other characters')
break
else:
print('Your input contains symbols only')

相关内容

  • 没有找到相关文章

最新更新