Python 带“的函数;至于;环
我正在研究一个非常简单的问题,但我遇到了一些问题 我想写的是一个函数(使用Python 带“的函数;至于;环,python,python-3.x,function,loops,for-loop,Python,Python 3.x,Function,Loops,For Loop,我正在研究一个非常简单的问题,但我遇到了一些问题 我想写的是一个函数(使用for循环),它可以识别输入中的字符串是否由以下字母组成:a、b、c和d。如果字符串包含不同于a、b、c或d的字母,程序应给出错误消息。如果字符串仅包含上述4个字母中的1、2或3个,则该字符串是正确的 字符串'abbbbcd'将是正确的 字符串'ab'将是正确的 字符串'ghjja'将不正确 sting'aaabbbccff'将不正确 这是我当前的代码版本: def string(f): for i in ra
for
循环),它可以识别输入中的字符串是否由以下字母组成:a
、b
、c
和d
。如果字符串包含不同于a、b、c或d的字母,程序应给出错误消息。如果字符串仅包含上述4个字母中的1、2或3个,则该字符串是正确的
- 字符串
将是正确的'abbbbcd'
- 字符串
将是正确的'ab'
- 字符串
将不正确'ghjja'
- sting
将不正确'aaabbbccff'
def string(f):
for i in range(len(f)):
if f[i]!='a' or f[i]!='b' or f[i]!='c' or f[i]!=d':
print('error')
else:
print('ok')
您可以使用该代码:
for i in string:
if i not in ['a', 'b', 'c', 'd']:
raise Exception('String contains wrong letter')
您可以使用该代码:
for i in string:
if i not in ['a', 'b', 'c', 'd']:
raise Exception('String contains wrong letter')
您的代码存在以下问题:
- 您使用的是
而不是或
,每个字符不可能等于所有4个输入和
- 您缺少
d
- 还可以在循环的每次迭代中打印输出
def only_abcd(f):
for i in range(len(f)):
if f[i]!='a' and f[i]!='b' and f[i]!='c' and f[i]!='d':
return False
return True
print("ok" if only_abcd(f) else "error")
您还可以在
if not all(i in "abcd" for i in f):
print("error")
else:
print("ok")
您的代码存在以下问题:
- 您使用的是
而不是或
,每个字符不可能等于所有4个输入和
- 您缺少
d
- 还可以在循环的每次迭代中打印输出
def only_abcd(f):
for i in range(len(f)):
if f[i]!='a' and f[i]!='b' and f[i]!='c' and f[i]!='d':
return False
return True
print("ok" if only_abcd(f) else "error")
您还可以在
if not all(i in "abcd" for i in f):
print("error")
else:
print("ok")
解决方案:
和
而不是或
李>
d
添加缺少的起始引号if
条件的else
块放入for
循环的中
def string(f):
error=False
for i in range(len(f)):
if f[i]!='a' and f[i]!='b' and f[i]!='c' and f[i]!='d':
print('error')
error=True
break
else:
print('ok')
def string(f):
letters = ['a','b','c','d']
error=False
for i in f:
if i not in letters:
error=True
print('error')
break
else:
print('ok')
或者,您可以尝试以下操作:
def string(f):
error=False
for i in range(len(f)):
if f[i]!='a' and f[i]!='b' and f[i]!='c' and f[i]!='d':
print('error')
error=True
break
else:
print('ok')
def string(f):
letters = ['a','b','c','d']
error=False
for i in f:
if i not in letters:
error=True
print('error')
break
else:
print('ok')
解决方案:
和
而不是或
李>
d
添加缺少的起始引号if
条件的else
块放入for
循环的中
def string(f):
error=False
for i in range(len(f)):
if f[i]!='a' and f[i]!='b' and f[i]!='c' and f[i]!='d':
print('error')
error=True
break
else:
print('ok')
def string(f):
letters = ['a','b','c','d']
error=False
for i in f:
if i not in letters:
error=True
print('error')
break
else:
print('ok')
或者,您可以尝试以下操作:
def string(f):
error=False
for i in range(len(f)):
if f[i]!='a' and f[i]!='b' and f[i]!='c' and f[i]!='d':
print('error')
error=True
break
else:
print('ok')
def string(f):
letters = ['a','b','c','d']
error=False
for i in f:
if i not in letters:
error=True
print('error')
break
else:
print('ok')
紧凑型单衬里:
def abcd_test(input):
return False not in [x in "abcd" for x in input]
紧凑型单衬里:
def abcd_test(input):
return False not in [x in "abcd" for x in input]
您当前的代码版本是什么?欢迎使用堆栈溢出!不幸的是,这不是一个代码编写或教程网站。请为您的问题提供答案,包括您尝试过的代码和收到的任何错误,或您遇到的问题的描述gi post it@B.go以及您当前的代码版本是什么?欢迎使用stack overflow!不幸的是,这不是一个代码编写或教程网站。请为您的问题提供答案,包括您尝试过的内容和收到的任何错误的代码,或您遇到的问题的描述。Gi将其发布@B.Gothank you!你能解释一下,为什么我这样修改你的代码,它就不工作了对于范围内的i(len(f)):如果f[i]!='a'和f[i]!='c'和f[i]!='b'和f[i]!='d':return False else:return True`(我修改了“return True”的位置)@mary Jones-因为这只会检查第一个字符,而不是整个字符串,这里的区别是只有在for循环完成而没有找到无效字符时才会返回True谢谢!你能解释一下,为什么我这样修改你的代码,它就不工作了对于范围内的i(len(f)):如果f[i]!='a'和f[i]!='c'和f[i]!='b'和f[i]!='d':return False else:return True`(我修改了“return True”的位置)@mary Jones-因为这只会检查第一个字符,而不是整个字符串,这里的区别是,只有当for循环完成而没有找到无效字符时,它才会返回True