对于分配的一部分,我需要将一个函数的变量作为字符串返回。然后,我需要将这些变量放入另一个函数中,最后将那些相同的变量作为整数返回。我希望这不太模糊。看起来似乎很容易就能自己找到,但是搜索已经花了大约一个小时。
startHour
和startMinute
是我要转换的变量。
以下是相关功能:
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)
我应该如何进行?谢谢。
答案 0 :(得分:1)
您的代码正确地从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
加两个值;否则返回0。如果失败,则返回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)
答案 1 :(得分:0)
我自己不能尝试,因为不清楚什么分钟列表和小时列表,所以我不知道该功能有什么问题,但是在第二部分中您说了
return startHours = int(startHour), startMinute = int(startMinute)
您未输入double等于,这将返回None,也将其返回为布尔值,
return startHours == int(startHour), startMinute == int(startMinute)
编辑:据我所知,唯一的问题是您必须打印PASS或打印validateUserInputTime
答案 2 :(得分:0)
它正在转换,只是您无法确定函数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))