如果条件为真则跳过条件

时间:2019-05-30 06:15:36

标签: python python-2.7 for-loop if-statement

我在for循环中使用了If语句,但是即使满足条件后,If语句也会被跳过

x=raw_input().split(" ")  
c=[]  
for a in x:  
    b=1  
    if a<0:  
        print "Please enter a number greater than or equal to 0"  
    else:      
        if(a==1 or a==0 ):  
            print "1"  
    for i in range(1,int(a)+1):  
            b=b*i  
    c.append(str(b))  

print ",".join(c)

该程序是查找阶乘,我正在得到结果。如果有人输入一个负数,则不应返回阶乘,但可以。我只想知道为什么if和else条件会被跳过。

3 个答案:

答案 0 :(得分:0)

您可能需要在执行int操作之前将输入转换为int。改变这个

x=raw_input().split(" ")

x=map(int, raw_input().split(" "))

答案 1 :(得分:0)

x="-2 3 6 -3".split(" ") 
c=[]  
for a in x:  
    b=1  
    if int(a)<0:  
        print ("Please enter a number greater than or equal to 0" ) 
        continue
    else:      
        if(a==1 or a==0 ):  
            print ("1"  )
    for i in range(1,int(a)+1):  
            b=b*i  
    c.append(str(b))  

print (",".join(c))

o / p:

Please enter a number greater than or equal to 0
Please enter a number greater than or equal to 0
6,720

两项更改,如果条件为int(a),并且如果您不想计算负数的阶乘,则添加continue

答案 2 :(得分:0)

字符串数字进行比较将返回False作为结果

'-2'< 0 ---> False --> if condition will be skipped

字符串转换为整数,因为阶乘仅应用于整数

int('-2') < 0 ---> True --> if condition will be executed
  • x = raw_input().split(" ")返回列表中的 strings数据类型

  • 所以您不能对整个列表int使用x

  • 一次只能输入一个字符串

在调用if条件时,您只考虑列表中的一个元素,

then convert from string to int before comparing to 0 --> int(a) < 0

  

第二点与缩进 print (",".join(c))有关   应该包含在else循环中

if(a==1 or a==0 ):  
                print "1" 

不需要,因为在下面的for循环中已经注意了

代码如下

x=raw_input().split(" ")  
c=[]  
for a in x:  
    b=1  
    if int(a) < 0:  
        print "Please enter a number greater than or equal to 0"  
    else:      
        for i in range(1,int(a)+1):  
            b=b*i  
        c.append(str(b))  


        print ",".join(c)