我对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_symbols
是True
还是False
,并相应地执行某些操作。
另外,作为一面,您的某些代码没有按照您的想法进行操作:
if symbols == symbols.isalpha():
...
将测试您的输入字符串symbols
是否等于返回布尔True
或False
的symbols.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')