仅符号字符串检测

时间:2017-07-18 13:49:44

标签: python python-3.x user-input symbols debug-symbols

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

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

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

这是我的代码:

while True:

  symbols = input("Enter symbol string:")

  if symbols == symbols.isalpha():
    print (symbols.isalpha())
  elif not a == a.isalpha():
    print (a.isalpha())
    break

3 个答案:

答案 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_symbolsTrue还是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')