Python 仅符号字符串检测
我对Python(以及一般的编程)相当陌生,所以我经常会遇到一些非常愚蠢的问题,比如下面的问题 我想反复检查用户输入中的所有字符是否都是符号。当输入这样的输入时,我想打印该字符串 由于似乎没有专门测试符号的方法,我决定先测试字母,然后测试数字,如果两者都是负数,那么它应该打印文本 这是我的密码:Python 仅符号字符串检测,python,python-3.x,user-input,symbols,debug-symbols,Python,Python 3.x,User Input,Symbols,Debug Symbols,我对Python(以及一般的编程)相当陌生,所以我经常会遇到一些非常愚蠢的问题,比如下面的问题 我想反复检查用户输入中的所有字符是否都是符号。当输入这样的输入时,我想打印该字符串 由于似乎没有专门测试符号的方法,我决定先测试字母,然后测试数字,如果两者都是负数,那么它应该打印文本 这是我的密码: while True: symbols = input("Enter symbol string:") if symbols == symbols.isalpha(): print
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')
上面的代码首先创建了一个符号列表,您希望确保该字符串是由被调用的有效\u符号创建的。接下来,它创建了一个名为的变量,该变量只包含符号,该变量的开头值为True
。接下来,它开始检查输入字符串中的每个字符是否存在于有效的\u符号中。如果遇到无效字符,则将仅包含符号的值更改为False
,并中断for循环(无需检查字符串的其余部分)。循环完成后,它检查是否只有符号
为真
或假
,并相应地执行操作
另一方面,您的一些代码并没有按照您认为的那样执行:
if symbols == symbols.isalpha():
...
将测试输入字符串symbols
是否等于返回布尔值True
或False
的symbols.isalpha()
的结果。你可能的意思是:
if symbols.isalpha():
...
elif
语句也很奇怪。您已经开始引用某个名为a
的变量,但在发布的代码中没有定义该变量。从您的描述和代码来看,您似乎希望此elif
语句也引用符号
,并调用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 text\n')#INPUT
reg =('[@_!#$£%^&*()<>?/\|}{~:]')#SYMBOL SEARCH
start()
重新导入
def start():
全局计数
对于符号中的字母:
如果重新搜索(注册,符号):
count=count+1#只是计算存在的数量
全局S#如果要存储结果
S=字母
其他:
打印(字母“:不是符号“)
计数=0
符号=输入('Enter text\n')#输入
reg=(“[@\\\\\\$”%^&*()?/\\\\\\\\\\\}{~:]”)符号搜索
开始()
稍微更新了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')
你所说的“符号”是什么意思?你是指标点符号吗?你是指“字母和数字以外的任何东西”?空格?新行?重音字符?你不需要在循环外将计数初始化为0吗?