Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.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_Function_Loops_For Loop - Fatal编程技术网

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