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

Python中如何将数字转为文本形式且保留数值运算功能?

问题解答

你代码里的核心问题是错误地把两个数字的文本形式直接拼接,比如num2words(num1) + num2words(num2)会把"one"和"one"拼成"oneone",而不是先计算两个数字的和再转成文本。

正确的逻辑应该是:用原始数字做运算求和,再把求和结果转换成文本形式作为正确答案。同时你打印题目时,"plus"和第二个数字的文本连在一起了,需要加个空格分开。

修改后的完整代码:

from random import randint
from num2words import num2words

score = 0
while score <= 10:
    num1 = randint(1,10)
    num2 = randint(1,10)
    # 先计算两个数字的和,再转成文本
    correct_sum = num1 + num2
    qAns = num2words(correct_sum)
    # 修正打印格式,给plus和第二个数字加空格
    print("What is", num2words(num1), "plus", num2words(num2))
    ans = input("type your answer: ")
    # 判断用户输入的文本是否等于和的文本形式,兼容大小写
    if ans.lower() == qAns.lower():
        print("Correct!")
        score += 1
    else:
        print(f"Incorrect! The right answer is {qAns}")
        score -= 1
    print(f"Current score: {score}")

额外说明:

  • 不需要让文本形式的数字具备运算能力,而是用原始的num1和num2做运算,运算结果再转成文本,这样既满足题目显示为文本的需求,又能正确计算。
  • 加入lower()是为了兼容用户输入大小写的情况,比如用户输入"Two"也能被识别为正确。

内容的提问来源于stack exchange,提问作者Kafuros CZ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:05:40