Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅符号字符串检测_Python_Python 3.x_User Input_Symbols_Debug Symbols - Fatal编程技术网

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

我对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')
上面的代码首先创建了一个符号列表,您希望确保该字符串是由被调用的
有效\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吗?