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

如何在Python中从JSON提取值并修复脚本无输出问题

解决Python汇率转换脚本无输出问题

嘿,我来帮你排查一下脚本没输出的问题!先拆解你的代码逻辑,其实核心问题不是转不转float,而是币种代码的比较逻辑出错了,咱们一步步理清楚:

问题出在哪?

看你这段关键代码:

aud = (data["AUD"])
coin=str(input('choose coin: ')).lower()
if coin==aud:
    print(aud*amount)
  • aud存储的是汇率数值(比如1.5974),但用户输入的coin是字符串(比如输入"aud"转成小写后是"aud"),字符串和数值永远不可能相等,所以if条件永远不成立,自然不会执行print语句。
  • 另外你只单独处理了AUD的情况,其他币种(比如BRL、USD)都没覆盖到,而且输入的币种是小写,和JSON里的大写键也不匹配。

修正后的脚本

我调整了代码逻辑,解决这些问题,还加了异常处理避免脚本崩溃:

import json

# 读取JSON格式的汇率文件
with open('2018-03-22.txt', 'r') as f:
    data = json.load(f)

# 获取用户输入,统一转成大写匹配JSON中的键
coin = input('choose coin: ').strip().upper()
# 处理金额输入,允许输入小数,同时捕获非法输入
try:
    amount = float(input('insert amount: '))
except ValueError:
    print("请输入有效的数字金额!")
    exit()

# 检查输入的币种是否存在于汇率数据中
if coin in data:
    # 取出汇率并显式转为float(json.load会自动转数字,但显式转换更稳妥)
    exchange_rate = float(data[coin])
    total = exchange_rate * amount
    print(f"{amount} 单位 {coin} 对应的计算结果是: {total}")
else:
    print(f"抱歉,没有找到 {coin} 的汇率数据!")

关键修改点解释

  1. 币种代码匹配:把输入的coin转成大写,直接和JSON里的键(比如"AUD")匹配,不需要单独定义每个币种变量,代码更简洁通用。
  2. 输入合法性检查:用try-except处理金额输入不是数字的情况,避免脚本直接崩溃。
  3. 覆盖所有币种:通过if coin in data判断,只要JSON里有的币种都能处理,不用逐个写if条件。
  4. 显式转float:虽然json.load会自动把JSON里的数字转成int或float,但显式转成float可以统一类型,避免比如IDR这类整数型汇率带来的潜在问题——这也是你疑惑的点,确实显式转换更稳妥,但它不是导致无输出的直接原因。

内容的提问来源于stack exchange,提问作者Filipe Santos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:55:10