我对Python(以及一般的编程)相当陌生,所以我经常面对非常愚蠢的问题,例如下面的问题。
我想要的是反复检查所有用户输入中的字符是否为符号。输入这样的输入后,我想打印该字符串。
由于似乎没有办法专门测试符号,我决定首先测试字母,然后测试数字,如果它们都是负数,那么它应该打印文本。
这是我的代码:
while True:
symbols = input("Enter symbol string:")
if symbols == symbols.isalpha():
print (symbols.isalpha())
elif not a == a.isalpha():
print (a.isalpha())
break
答案 0 :(得分:1)
符号有点模糊,但这是一个策略:
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
是否等于返回布尔值symbols.isalpha()
或True
的{{1}}的结果。你可能只是意味着:
False
if symbols.isalpha():
...
语句也很奇怪。您已经开始引用一个名为elif
的变量,但您没有在您发布的代码中的任何位置定义它。从您的说明和代码中,您似乎想要使用此a
语句并引用elif
并调用symbols
方法:
isdigit
然而,这在逻辑上并不完整,因为带有混合字母,数字和符号的字符串将会漏掉。例如,if symbols.isalpha():
...
elif symbols.isdigit():
...
else:
...
将失败两个测试并打印。你想要一些比我上面编写的代码更独特的东西。
答案 1 :(得分:0)
这就是我解决的方法。
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()
答案 2 :(得分:0)
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')