如果前面的数字是正数还是负数,Python if在分析数字时会出现问题吗?

如果前面的数字是正数还是负数,Python if在分析数字时会出现问题吗?,python,if-statement,Python,If Statement,所以我的目标是制作一个扫描数字的程序,如果零前的数字是负数,零后的数字是正数,它会打印“零是正数”,如果相反的数字是负数。问题是,每次我输入数字时,它总是只打印“零为负”,因为现在程序应该只处理1个零和2个数字,但我稍后会花费。这是我的密码: number = input("Enter Numbers: ") lists = [] lists = number.split() print(lists) z = 0 y = 0 x = 0 indexes = [index for index, e

所以我的目标是制作一个扫描数字的程序,如果零前的数字是负数,零后的数字是正数,它会打印“零是正数”,如果相反的数字是负数。问题是,每次我输入数字时,它总是只打印“零为负”,因为现在程序应该只处理1个零和2个数字,但我稍后会花费。这是我的密码:

number = input("Enter Numbers: ")
lists = []
lists = number.split()
print(lists)
z = 0
y = 0
x = 0
indexes = [index for index, element in enumerate(lists) if element == "0"]
print(indexes)

pos = indexes[0] - 1
neg = indexes[0] + 1
zero = indexes[0]

if(int(neg) < zero and zero > int(pos)):
   print("Zero is postive")
else:
   print("Zero is negative")
number=输入(“输入数字:”)
列表=[]
lists=number.split()
打印(列表)
z=0
y=0
x=0
indexes=[如果元素==“0”,则枚举(列表)中的元素的索引]
打印(索引)
pos=索引[0]-1
负=索引[0]+1
零=索引[0]
如果(int(neg)int(pos)):
打印(“零为正”)
其他:
打印(“零为负”)

如果我正确理解了问题陈述,您需要在索引处比较列表元素,但正在比较索引。因此,
if
中的条件应更改为:

if(int(neg)int(pos)):
对于类似的内容(请注意,在python的
if
中不需要大括号):

if list[neg]>list[zero]>list[pos]:

如前所述,您应该比较列表中的值,而不是索引号

此外,此语句中存在逻辑错误
if(int(neg)int(pos)):
,它实际上检查
neg
两者是否都小于
zero

如果
neg
将前一个值指向
0
值,并将
pos
指向下一个值,则可能更清楚

我对您的代码进行了一些修改,我认为它工作正常:

number = input("Enter Numbers: ")
lists = []
lists = number.split()
print(lists)
z = 0
y = 0
x = 0
indexes = [index for index, element in enumerate(lists) if element == "0"]
print(indexes)

neg = int(indexes[0] - 1)
pos = int(indexes[0] + 1)
zero = int(indexes[0])

if lists[neg] < lists[zero] < lists[pos]:
    print("Zero is postive")
else:
   print("Zero is negative")
number=输入(“输入数字:”)
列表=[]
lists=number.split()
打印(列表)
z=0
y=0
x=0
indexes=[如果元素==“0”,则枚举(列表)中的元素的索引]
打印(索引)
neg=int(索引[0]-1)
pos=int(索引[0]+1)
零=整数(索引[0])
如果列表[neg]<列表[zero]<列表[pos]:
打印(“零为正”)
其他:
打印(“零为负”)

索引的元素是一组单调递增的索引,而不是列表中的值。
index[0]-1
总是正确的,但是您需要
index[0]>index[0]+1
为真才能打印“肯定”。请提供示例测试用例,以帮助人们轻松理解问题。