修改为先前的问题:程序耗时数英里

时间:2019-07-01 02:37:51

标签: python function

import re

user_miles = input()

def miles_to_laps(user_miles):
miles = float(user_miles) * 4
    print('%0.2f'% miles)
    return
miles_to_laps(user_miles)

def parse_function_text(s):
    try:
        return re.search("miles_to_laps\((.+)\)", s)[1]
    except TypeError:
        return None

def accept_input(user_input):
    desugar = parse_function_text(user_input)
    if desugar is not None:
        user_input = desugar    
    try:
        return float(user_input)
    except ValueError:
        raise ValueError("Cannot process input %s" % user_input)

assert accept_input("miles_to_laps(3.5)") == 3.5

因此,执行此操作将显示用于创建程序的新代码,该代码允许输入为“ miles_to_laps(20)” 我目前的错误代码是

Traceback (most recent call last):
  File "main.py", line 9, in <module>
    miles_to_laps(user_miles)
  File "main.py", line 6, in miles_to_laps
    miles = float(user_miles) * 4
ValueError: could not convert string to float: 'miles_to_laps(20)'

1 个答案:

答案 0 :(得分:0)

此行代码接受一个输入,但始终返回一个字符串,因此,如果键入20作为对此输入的响应,则它将作为'20'存储在内存中(字符串OR str类型)

user_miles = input()

您的函数用于执行数学运算,因此需要数字(即整数类型(int)或浮点类型(float)。

解决此问题的最简单方法是使用int()函数包装input()函数立即将字符串转换为整数。

user_miles = int(input())