Python 范围定义不正确

Python 范围定义不正确,python,range,Python,Range,当我键入到\u float\u hours(0,1,0)时,它会返回一个值,但当我键入到\u float\u hours(0,0,1)时,它不会返回值 此外,如果我将键入浮动小时数(0,61,0)它会返回一个值,而当我将键入浮动小时数(0,1,59)它不会返回值 为什么分钟的范围大于1秒,而秒的范围在0到58之间 我希望函数仅在分钟和秒的输入介于0和59之间时返回一个值 def to_float_hours(hours, minutes, seconds): acceptable_ran

当我键入
到\u float\u hours(0,1,0)
时,它会返回一个值,但当我键入
到\u float\u hours(0,0,1)
时,它不会返回值

此外,如果我将
键入浮动小时数(0,61,0)
它会返回一个值,而当我将
键入浮动小时数(0,1,59)
它不会返回值

为什么分钟的范围大于1秒,而秒的范围在0到58之间

我希望函数仅在分钟和秒的输入介于0和59之间时返回一个值

def to_float_hours(hours, minutes, seconds):
    acceptable_range = list(range(0,59))
    while minutes and seconds in acceptable_range:
        hours = hours
        minutes = minutes/60
        seconds = seconds/3600
        total = hours+minutes+seconds
        return total

这是因为停止在功能上是独占的,意味着范围函数给出的值将从开始停止-1

acceptable_range = list(range(0,60))

这是因为停止在功能上是独占的,意味着范围函数给出的值将从开始停止-1

acceptable_range = list(range(0,60))

首先,你需要修正While中的逻辑(While是@painor说的),并通过添加一来修正范围(因为我们从零开始)


首先,你需要修正While中的逻辑(While是@painor说的),并通过添加一来修正范围(因为我们从零开始)

range()
函数直到最后一个值才提交。您的当前范围应为(0,60),因为59秒后,秒或分钟会自动更改为下一分钟或秒,因此该值会更新为0,而不是60。所以正确的范围是<强>(0,60)< /强>,其中Python实际上不会考虑在该范围内存在的最后一个数,而是在它之前的个数。

所以创建
列表(范围(0,60))
实际上就是创建
[0,1,2,…59]

另一个问题是,您应该使用
if
语句,而不是
while
循环,因为您希望仅在数字在可接受范围内时执行条件

还有,我不明白你为什么要限制分秒。他们甚至可以超过60岁


无论如何,下面是代码的工作版本:-

def to_float_hours(hours, minutes, seconds):
    acceptable_range = list(range(0,60))
    if seconds in acceptable_range and minutes in acceptable_range:
        hours = hours
        minutes = minutes/60
        seconds = seconds/3600
        total = hours+minutes+seconds
        return total
range()
函数直到最后一个值才提交。您的当前范围应为(0,60),因为59秒后,秒或分钟会自动更改为下一分钟或秒,因此该值会更新为0,而不是60。所以正确的范围是<强>(0,60)< /强>,其中Python实际上不会考虑在该范围内存在的最后一个数,而是在它之前的个数。

所以创建
列表(范围(0,60))
实际上就是创建
[0,1,2,…59]

另一个问题是,您应该使用
if
语句,而不是
while
循环,因为您希望仅在数字在可接受范围内时执行条件

还有,我不明白你为什么要限制分秒。他们甚至可以超过60岁


无论如何,下面是代码的工作版本:-

def to_float_hours(hours, minutes, seconds):
    acceptable_range = list(range(0,60))
    if seconds in acceptable_range and minutes in acceptable_range:
        hours = hours
        minutes = minutes/60
        seconds = seconds/3600
        total = hours+minutes+seconds
        return total

在可接受范围内的分钟和秒时执行操作:与在可接受范围内的分钟==True和秒时执行操作相同:啊,好的。谢谢计数从0开始,到58结束。59在这种情况下等于下一个小时。在可接受范围内的
分钟和秒时执行此操作:
在可接受范围内的分钟==True和秒时执行此操作相同:
啊,好的。谢谢计数从0开始,到58结束。59在这种情况下等于下一个小时。