我在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条件会被跳过。
答案 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)