Python函数未将float_time返回至main函数的原因咨询
问题:convert函数返回的值无法在main函数中使用
你的问题出在两个核心点:
- 未接收函数返回值:调用
convert("time")时只是执行了函数,但没有把返回的结果保存到变量里,后续代码自然无法使用这个值。 - 局部变量跨函数不可访问:
float_time是convert函数内部定义的局部变量,main函数没有权限直接调用它,必须通过接收函数返回值的方式获取结果。
修改后的可运行代码
def main(): # 将convert函数的返回值赋值给main作用域内的float_time变量 float_time = convert() print(float_time) def convert(): # 原参数time被重新赋值为input结果,可直接移除该参数 time = input("What time is it? ") if len(time) > 4: sliced_hour = slice(2) sliced_minutes = slice(3, 5) hour = time[sliced_hour] minutes = time[sliced_minutes] else: sliced_hour = slice(1) sliced_minutes = slice(2,4) hour = time[sliced_hour] minutes = time[sliced_minutes] minutes_int = int(minutes) hour_int = int(hour) minutes_float = minutes_int / 60 float_time = float(hour_int + minutes_float) return float_time if __name__ == "__main__": main()
额外优化建议
当前用切片处理时间字符串的方式容错性很差(比如用户输入10:5这种分钟为一位的格式时,切片会取到冒号,转int直接报错),推荐用split(':')分割时间,代码更简洁可靠:
def convert(): time = input("What time is it? ") # 用冒号分割字符串,直接得到小时和分钟的字符串 hour_str, minute_str = time.split(':') hour_int = int(hour_str) minutes_int = int(minute_str) # 计算浮点时间并返回(float转换可省略,Python会自动做浮点运算) return hour_int + minutes_int / 60
内容的提问来源于stack exchange,提问作者user22473295
相关产品推荐
相关产品推荐

