Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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_List_Python 2.7 - Fatal编程技术网

Python 一个程序中的名称错误,而另一个程序中的语法错误

Python 一个程序中的名称错误,而另一个程序中的语法错误,python,python-3.x,list,python-2.7,Python,Python 3.x,List,Python 2.7,因此,首先,我需要创建一个程序,用户在其中输入一个字符,如果该字符为Int,则会弹出一个错误。。。如果是Str,那么它应该进一步分为辅音和元音。然而,这并不能解决这个问题(而且它不起作用),因为用户可以输入特殊字符,而这些字符只会作为辅音过滤掉 Z = (input("Enter a character: ")) if type(Z) == int: print(Z, "is a numeral") else: if (Z=='A' or Z

因此,首先,我需要创建一个程序,用户在其中输入一个字符,如果该字符为Int,则会弹出一个错误。。。如果是Str,那么它应该进一步分为辅音和元音。然而,这并不能解决这个问题(而且它不起作用),因为用户可以输入特殊字符,而这些字符只会作为辅音过滤掉

Z = (input("Enter a character: "))
if type(Z) == int:
   print(Z, "is a numeral")
else: 
   if (Z=='A' or Z=='a' or Z =='E' or Z=='e' or Z=='I'or Z=='i'
        or Z=='O' or Z=='o' or Z=='U' or Z=='u'):
      print(Z, "is a Vowel")
   else:
      print(Z, "is a Consonant")
所以,在这之后,我尝试创建一个包含所有字母的列表,然后我认为它会起作用。。。我错了

my=input('Enter a character:')
list=[a,A,b,B,c,C,d,D,e,E,f,F,g,G,h,H,i,I,j,J,k,K,l,L,m,M,n,N,o,O,p,P,q,Q,r,R,s,S,t,T,u,U,v,V,w,W,x,X,y,Y,z,Z]
if my in list:
   if (my=='A' or my=='a' or my=='E' or my=='e' or my=='I'or my=='i'
        or my=='O' or my=='o' or my=='U' or my=='u'):
      print(my, "is a Vowel")
   else:
      print(my, "is a Consonant")
else:
    print ('HAHAHA')
这显示了这个错误

Traceback (most recent call last):
  File "C:\Users\veert\Desktop\Python\VowelOrConsonant#1.py", line 2, in <module>
    list=[a,A,b,B,c,C,d,D,e,E,f,F,g,G,h,H,i,I,j,J,k,K,l,L,m,M,n,N,o,O,p,P,q,Q,r,R,s,S,t,T,u,U,v,V,w,W,x,X,y,Y,z,Z]
NameError: name 'a' is not defined
回溯(最近一次呼叫最后一次):
文件“C:\Users\veert\Desktop\Python\元音辅音#1.py”,第2行,在
列表=[a,a,b,b,c,c,d,d,e,e,f,f,g,g,h,h,i,i,j,j,k,k,l,l,m,m,n,n,o,o,p,p,q,q,r,r,s,t,t,u,u,v,w,w,x,x,y,y,z]
NameError:未定义名称“a”

请帮帮我,伙计们

上面的列表值应该是String类型。因此,您需要添加“”中的每个字符,如下所示

my=input('Enter a character:')
list=["a","A","b","B","c","C","d","D","e","E"]
if my in list:
   if (my=='A' or my=='a' or my=='E' or my=='e' or my=='I'or my=='i'
        or my=='O' or my=='o' or my=='U' or my=='u'):
      print(my, "is a Vowel")
   else:
      print(my, "is a Consonant")
else:
    print ('HAHAHA')

当您添加list=[a,a,b,b,…]时,Python解释器会尝试搜索变量a,a,b,b等的值。在这里它不是预定义的。所以,它返回那个名称错误。

可能是这样的吗

 vowels = ['A','a','E','e','I','i','O','o','U','u'],
 consonants = ['B','b','C','c','D','d','H','h','J','j','K','k','L','l','M','m','N','n','P','p','Q','q','R','r','S','s','T','t','V','v','W','w','X','x','Y','y','Z','z']

inp = input('Please enter a character > ')

if inp not in vowels and inp not in consonants:
    print(f'{inp} is not in the alphabet')

if inp in vowels:
    print(f'{inp} is a vowel')

if inp in consonants:
    print(f'{inp} is a consonant')
为了便于阅读,我将元音和辅音分开,试图将比较运算符缩短到只有几个

满足所有输入:

alphaneumeric = {
    'vowel': ['A','a','E','e','I','i','O','o','U','u'],
    'consonant': ['B','b','C','c','D','d','H','h','J','j','K','k','L','l','M','m','N','n','P','p','Q','q','R','r','S','s','T','t','V','v','W','w','X','x','Y','y','Z','z'],
    'number': ['1','2','3','4','5','6','7','8','9','0'],
    'symbol': ['!','@','#','$','%','^','&','*','(',')','[',']','{','}','<','>','.',',','\'','"',':',';','-','=','/','\\','~','`']
}

inp = input('Please enter a chacter > ')

for key, lst in alphaneumeric.items():
    if inp in lst:
        print(f'{inp} is a {key}')
        break # return immediately
alphaneumeric={
‘元音’:[‘A’、‘A’、‘E’、‘E’、‘I’、‘I’、‘O’、‘O’、‘U’、‘U’],
‘辅音’:[‘B’、‘B’、‘C’、‘D’、‘D’、‘H’、‘H’、‘J’、‘K’、‘K’、‘L’、‘L’、‘M’、‘M’、‘N’、‘P’、‘Q’、‘R’、‘S’、‘S’、‘T’、‘V’、‘W’、‘W’、‘X’、‘X’、‘Y’、‘Z’、],
‘数字’:[‘1’、‘2’、‘3’、‘4’、‘5’、‘6’、‘7’、‘8’、‘9’、‘0’],
‘符号’:['!'、'@'、'#'、'$'、'%'、'^'、'&'、'*'、'('、')、'['、']'、'{'、'}'、'、'、'、'、':'、'、'、'、'、'、'、'、'、'='、'/'、'\'、'、'、'、'、'、'、'、'、'、'、'、'’
}
inp=input('请输入字符>')
对于键,字母NEUMERIC.items()中的lst:
如果inp在lst中:
print(f'{inp}是一个{key}')
中断#立即返回

请将每个字符添加到“否则,python解释器将尝试搜索a、a、b、b等变量。。。。这就是为什么会出现名字错误谢谢你。。。我是python新手,所以我完全忘记了这一点。。。非常感谢,没有问题:)我们应该通过在找到元素时立即输出来改善这一点。而不是将列表遍历到底,即使在找到元素之后也是如此。如果在循环期间打印(key),您将看到找到了元素,但在找到打印(f'{inp}是{key}')之后,循环将继续。实现这一点的一个简单方法是在比较运算符后添加“break”,它检查“if inp in lst”。提示:
import string
str.lower
@tobias_k sound advice先生,OP必须明确查看string模块。