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

Python 如何绕过第一组条件

Python 如何绕过第一组条件,python,Python,这是我上入门编程课的第二天,我遇到了麻烦。我们是关于if语句的。家庭作业是 编写一个程序,提示用户输入整数(您可以假设 输入的值将是一个整数)。如果该整数等于零,则打印“零”。如果不是,确定是否 它是正片还是负片,然后打印它是哪一个。此外,还要确定该数字是否可以均匀整除 5点之前 现在我可以提示用户输入一个数字,并确定它是正数还是负数,或者它是否可以被5整除,但我不知道如何让程序绕过未满足的第一个条件,进入第二组条件,下面是我的代码示例 number = input("enter an inte

这是我上入门编程课的第二天,我遇到了麻烦。我们是关于if语句的。家庭作业是

编写一个程序,提示用户输入整数(您可以假设 输入的值将是一个整数)。如果该整数等于零,则打印“零”。如果不是,确定是否 它是正片还是负片,然后打印它是哪一个。此外,还要确定该数字是否可以均匀整除 5点之前

现在我可以提示用户输入一个数字,并确定它是正数还是负数,或者它是否可以被5整除,但我不知道如何让程序绕过未满足的第一个条件,进入第二组条件,下面是我的代码示例

number = input("enter an integer: ")

if number > 0 and number%5 == 0:
    print number, "is positive and divisible by 5"
else :
    print "positive but not divisible by 5"

if number < 0 and number%5== 0:
    print "neggy and divisible by 5"
else :
    print "neggy but not divisible by 5"
number=input(“输入一个整数:”)
如果编号>0且编号%5==0:
打印数字,“为正数,可被5整除”
其他:
打印“正数,但不能被5整除”
如果数字<0且数字%5==0:
打印“负数并可被5整除”
其他:
打印“负数,但不能被5整除”
我的问题是,当我键入一个负数时,它会打印“正数,但不能被5整除”,因为第一个条件不满足。我试过elif但每次都有语法错误,帮帮忙? 请不要去幻想,因为我的老师只想要基本的“and”、“or”、“if”、“else”和“elif”这些词。谢谢

使用elif:

number = input("enter an integer: ")

if number > 0 and number%5 == 0:
    print number, "is positive and divisible by 5"
elif number > 0:
    print "positive but not divisible by 5"
elif number < 0 and number%5== 0:
    print "neggy and divisible by 5"
elif number < 0:
    print "neggy but not divisible by 5"
else:
    print "zero"
number=input(“输入一个整数:”)
如果编号>0且编号%5==0:
打印数字,“为正数,可被5整除”
elif编号>0:
打印“正数,但不能被5整除”
elif编号<0且编号%5==0:
打印“负数并可被5整除”
elif数<0:
打印“负数,但不能被5整除”
其他:
打印“零”
Python 2.7.4

number = int(raw_input())

if not number: print "zero"
elif abs(number) % 5 == 0:
    print [ `number` + " is negative and divisible by 5", 
        `number` + " is positive and divisible by 5"][number > 0]
else: print [ `number` + " is negative but not divisible by 5", 
        `number` + " is positive but not divisible by 5"][number > 0]

如果。。。埃利夫。。。else但无论如何,我要加入另一个选项:

if number == 0:
    print 'zero'
else:
    print number, 'is', 'positive' if number > 0 else 'negative', 'and',
    print 'not' if number % 5 else '', 'divisible by 5'
解释。。。这利用了Python2中的
print
语句可以获取多个用逗号分隔的值的方式,并显示用空格分隔的值;它使用,允许您重写(例如)

作为


但是不推荐使用这些测试,因为它们通常会降低代码的可读性。

让我们先分别处理每个测试。首先,你要检查它是正的还是负的(甚至是零)。这是属性的一个“类别”,因为数字不能同时为正和负:

if number > 0:
    # number is positive
elif number < 0:
    # number is negative
else:
    # number is zero
现在我们对两个不同的属性类别进行了两次单独的检查。如果我们希望两个属性都有一个单独的输出(例如代码中已经使用的“正数和可除5”)。现在有不同的方法来联锁这两个检查。一种是简单地将一个放入另一个,如下所示:

if number > 0:
    if number % 5 == 0:
        print('Number is positive and divisible by 5')
    else:
        print('Number is positive but not divisible by 5')
elif number < 0:
    if number % 5 == 0:
        print('Number is negative and divisible by 5')
    else:
        print('Number is negative but not divisible by 5')
else:
    print('Number is zero')
正如您所看到的,我们只使用了一个缩进级别,所有检查都在一个if-elif-else结构中。不幸的是,这迫使我们在上述检查中有一些重复。这是因为当在一个if中检查两个事物时,当我们到达else/elif时,我们不知道哪个是错误的。因此,如果我们仍然想确保,例如,当数字不是正数且可被5整除时,它是正数,我们必须再次检查

这基本上是你忘记的:你的else实际上只能说“不正或不可被5整除”

现在,进一步讲,我们实际上仍然可以消除重复。因为我们的两个“属性类别”是完全独立的,所以我们可以独立地检查它们(就像我们在开始时所做的那样)。要获得组合输出,我们只需按顺序构造该输出:

# because zero is a special case, we handle it separately
# while sacrificing an indentation level.
if number == 0:
     print('Number if zero')
else:
    # check for the sign first
    if number > 0:
        output = 'Number is positive'
    else:
        output = 'Number is negative'

    # check for the divisibility next
    if number % 5 == 0:
        output += ' and divisibile by 5'
    else:
        output += ' but not divisible by 5'

    # whatever the checks resulted in, we have our output
    print(output)

当然,这对您的任务来说可能有点太远了,但将来最好知道:)

0可以被5整除吗?我个人非常喜欢三元数,但为了便于讨论,您可能应该详细说明在这种情况下它是如何工作的;因为关于三元组有很多事情要做。在Python3中删除了反勾号,所以为它们做广告不是一个好主意。另外,使用列表索引是一种相当混乱的方法,绝对不推荐初学者使用(而且也不会给您带来任何好处)。最后,对于零检查,
notnumber
:显式优于隐式;这就是为什么我指定了我使用的python版本。我提供了一个不同于提交的所有其他解决方案的解决方案。我的解决方案与所有其他解决方案做了相同的事情,尽管读起来有点笨拙。我知道这一点,这就是我提交它的原因。有时候有变化是很好的
if number > 0:
    # number is positive
elif number < 0:
    # number is negative
else:
    # number is zero
if number % 5 == 0:
    # number is divisible by 5
else:
    # number is not divisible by 5
if number > 0:
    if number % 5 == 0:
        print('Number is positive and divisible by 5')
    else:
        print('Number is positive but not divisible by 5')
elif number < 0:
    if number % 5 == 0:
        print('Number is negative and divisible by 5')
    else:
        print('Number is negative but not divisible by 5')
else:
    print('Number is zero')
if number > 0 and number % 5 == 0:
    print('Number is positive and divisible by 5')
elif number > 0:
    print('Number is positive but not divisible by 5')
elif number < 0 and number % 5 == 0:
    print('Number is negative and divisible by 5')
elif number < 0:
    print('Number is negative but not divisible by 5')
else:
    print('Number is zero')
# because zero is a special case, we handle it separately
# while sacrificing an indentation level.
if number == 0:
     print('Number if zero')
else:
    # check for the sign first
    if number > 0:
        output = 'Number is positive'
    else:
        output = 'Number is negative'

    # check for the divisibility next
    if number % 5 == 0:
        output += ' and divisibile by 5'
    else:
        output += ' but not divisible by 5'

    # whatever the checks resulted in, we have our output
    print(output)