如果前面的数字是正数还是负数,Python if在分析数字时会出现问题吗?
所以我的目标是制作一个扫描数字的程序,如果零前的数字是负数,零后的数字是正数,它会打印“零是正数”,如果相反的数字是负数。问题是,每次我输入数字时,它总是只打印“零为负”,因为现在程序应该只处理1个零和2个数字,但我稍后会花费。这是我的密码:如果前面的数字是正数还是负数,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
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
为真才能打印“肯定”。请提供示例测试用例,以帮助人们轻松理解问题。