修正到先前的问题:程序圈到英里

2024-04-16 13:20:39 发布

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

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

所以这样做是为了显示用于创建程序的新代码,允许输入为“英里到圈(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)'

Tags: totextreinputreturnparsedeffunction
1条回答
网友
1楼 · 发布于 2024-04-16 13:20:39

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

user_miles = input()

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

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

user_miles = int(input())

相关问题 更多 >