家庭作业,python3:在函数中更改变量类型

2024-09-27 07:20:55 发布

您现在位置:Python中文网/ 问答频道 /正文

对于赋值的一部分,我需要将一个函数中的变量作为字符串返回。然后我需要将这些变量放入另一个函数中,最后将这些变量作为整数返回。我希望这不是太含糊。这似乎是我自己很容易就能找到的东西,但我已经花了大约一个小时的时间去寻找了。你知道吗

startHourstartMinute是我要转换的变量。你知道吗

以下是相关功能:

hoursList = []
minutesList = []
listSize = 0

def createList(listSize): #WORKING
    while listSize < 24:
        hoursList.append(listSize)
        listSize += 1
    while listSize < 84:
        minutesList.append(listSize - 24)
        listSize += 1

createList(listSize)

def collectUserInputTime(): #WORKING
    startHour, startMinute = input("Enter the time the call starts in 24-hour rotation:\n").split(":")
    return startHour, startMinute

def validateUserInputTime(startHour, startMinute): #NEED TO CHANGE STRING TO INT
    if int(startHour) in hoursList and int(startMinute) in minutesList:
        #print("PASS")
        return True, int(startHour), int(startMinute)
    else:
        print("FAIL")
        return False

startHour, startMinute = collectUserInputTime()
validateUserInputTime(startHour, startMinute)

我也试过:

return startHours = int(startHour), startMinute = int(startMinute)

我该怎么办?谢谢。你知道吗


Tags: 函数inreturndefworkingintappendwhile
3条回答

它正在被转换,只是您无法理解您的函数validateUserInputTime()正在以整数格式返回值,只是您没有使用print语句显示它

使用此代码:

hoursList = []
minutesList = []
listSize = 0

def createList(listSize): #WORKING
    while listSize < 24:
        hoursList.append(listSize)
        listSize += 1
    while listSize < 84:
        minutesList.append(listSize - 24)
        listSize += 1

createList(listSize)

def collectUserInputTime(): #WORKING
    startHour, startMinute = input("Enter the time the call starts in 24-hour rotation:\n").split(":")
    return startHour, startMinute

def validateUserInputTime(startHour, startMinute):
    if int(startHour) in hoursList and int(startMinute) in minutesList:
        #print("PASS")
        return True, int(startHour), int(startMinute)
    else:
        print("FAIL")
        return False

startHour, startMinute = collectUserInputTime()
print(validateUserInputTime(startHour, startMinute))

我自己不能尝试这个,因为什么minuteslist和hourslist不清楚,所以我不知道这个函数有什么问题,但是在第二部分,你说

return startHours = int(startHour), startMinute = int(startMinute)

你没有把一个双等号,它会返回None,也会返回一个布尔值,用这个

return startHours == int(startHour), startMinute == int(startMinute)

编辑:从我所看到的工作,唯一的问题是你要么打印通行证或打印验证输入时间

您的代码正确地从validateUserInputTime返回整数值:

return True, int(startHour), int(startMinute)

但调用函数时,忽略这些返回值:

validateUserInputTime(startHour, startMinute)

……所以它们是否正确并不重要;你不能对它们做任何事。你知道吗

如果你试着print(type(startHour)),它仍然是str,因为它仍然是一个与以前相同的值的名称。你知道吗

如果要将这些返回值赋给变量,则需要一个赋值语句:

success, startHour, startMinute = validateUserInputTime(startHour, startMinute)

现在,print(type(startHour))将显示int。你知道吗


然而,对于一个函数来说,这是一个非常奇怪的接口。如果成功,则返回True加上两个值;如果失败,则返回False加上其他值。因此,对于无效时间,该赋值将引发TypeError: 'bool' object is not iterable。你知道吗

即使在失败的情况下,也可以通过返回三个值来解决此问题:

return False, int(startHour), int(startMinute)

或者,更简单地说,只需使用一个return

success = int(startHour) in hoursList and int(startMinute) in minutesList
if not success:
    print("FAIL")
return success, int(startHour), int(startMinute)

相关问题 更多 >

    热门问题