You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新手求助:如何将输入的分数转换为浮点数?

解决分数转浮点数的问题

你遇到的问题是float()和decimal.Decimal()都无法直接解析形如'1/3'的分数字符串——它们只支持标准数字格式。下面给你几种可行的解决方案:

方法1:手动拆分分子分母(最安全)

手动将输入的分数字符串按/分割,转成整数后计算商:

def parse_input(input_str):
    if '/' in input_str:
        numerator, denominator = input_str.split('/')
        return float(numerator) / float(denominator)
    else:
        # 兼容普通数字输入
        return float(input_str)

把你代码里所有float(input(...))替换成这个函数即可,比如:

x = parse_input(input("Side A: "))
y = parse_input(input("Angle b: "))

这种方法完全可控,没有安全风险,适合自用工具。

方法2:使用fractions.Fraction(精度更可靠)

Python标准库fractions可以直接解析分数字符串,再转成浮点数:

from fractions import Fraction

def parse_input(input_str):
    return float(Fraction(input_str))

它能处理更复杂的分数格式(比如'-2/5'、'3/4'),计算精度比手动拆分更稳定。

方法3:使用eval(简单但有风险)

如果只是自己使用,不怕恶意输入,可以直接用eval计算字符串表达式:

def parse_input(input_str):
    return float(eval(input_str))

⚠️ 注意:这个方法绝对不能用于接收未知用户输入的场景,eval会执行任何传入的代码,存在安全隐患。

修改后的完整示例代码

以方法1为例,修改你的chooseradians函数:

def parse_input(input_str):
    if '/' in input_str:
        numerator, denominator = input_str.split('/')
        return float(numerator) / float(denominator)
    else:
        return float(input_str)

def chooseradians():
    choice = input("1. Side Side Side\n2. Side Angle Side\n3. Angle Side Angle")
    if choice == '1':
        x = parse_input(input("Side A: "))
        y = parse_input(input("Side B: "))
        z = parse_input(input("Side C: "))
        sidesidesiderad(x, y, z)
    elif choice == '2':
        x = parse_input(input("Side A: "))
        y = parse_input(input("Angle b: "))
        z = parse_input(input("Side C: "))
        SideAngleSiderad(x, y, z)
    elif choice == '3':
        x = parse_input(input("Angle a: "))
        y = parse_input(input("Side B: "))
        z = parse_input(input("Angle c: "))
        #AngleSideAnglerad(x, y, z)

另外,代码里把choice转成字符串后和str(1)比较的操作可以简化,直接用choice == '1'即可——因为input()返回的本身就是字符串。

内容的提问来源于stack exchange,提问作者Jayant Goyal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 03:12:03