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

Python如何调用其他函数 实现按3查询实时美元对卢布汇率功能

修复后的完整实现代码

以下代码已优化逻辑,按下数字3时才会实时发起汇率查询请求,返回最新的美元兑卢布汇率:

import requests
from bs4 import BeautifulSoup

# 谷歌汇率查询地址,请求头模拟浏览器访问避免被拦截
DOLLAR_RUB = 'https://www.google.com/search?sxsrf=ALeKk01NWm6viYijAo3HXYOEQUyDEDtFEw%3A1584716087546&source=hp&ei=N9l0XtDXHs716QTcuaXoAg&q=%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80+%D0%BA+%D1%80%D1%83%D0%B1%D0%BB%D1%8E&oq=%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80+&gs_l=psy-ab.3.0.35i39i70i258j0i131l4j0j0i131l4.3044.4178..5294...1.0..0.83.544.7......0....1..gws-wiz.......35i39.5QL6Ev1Kfk4'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'}

def check_currency():
    full_page = requests.get(DOLLAR_RUB, headers=headers)
    soup = BeautifulSoup(full_page.content, 'html.parser')
    # 修复原代码多class匹配写法错误问题,改用列表传入多个class值
    convert = soup.find_all("span", {"class": ["DFlfde", "SwHCTb"], "data-precision": 2})
    return f"当前1美元兑换卢布的汇率为:{convert[0].text}"

class Bank:
    def __init__(self):
        self.bank = ('*********\n银行现有资金:739237美元\n*********')
        self.person = ('*********\n欠款人名单:\nSergey\nAndrey\nIvan\nAnton\n*********')

    def money(self):
        return self.bank

    def info(self):
        return self.person

    def valuta(self):
        # 仅调用该方法时才实时查询汇率
        return check_currency()

# 交互提示
print("请输入对应数字执行操作:")
print("1:查看银行资金总额")
print("2:查看欠款人名单")
print("3:查询美元兑卢布实时汇率")
print("9:支持作者")
print("0:退出程序")
print("请输入数字:")

bank = Bank()

while True:
    try:
        getinfo = int(input())
    except ValueError:
        print("输入错误,请输入数字!")
        continue
    if getinfo == 1:
        print(bank.money())
    elif getinfo == 2:
        print(bank.info())
    elif getinfo == 3:
        print(bank.valuta())
    elif getinfo == 9:
        print('*********\n您可以通过转账到比特币钱包支持作者,地址:32sdadl7jdS82kdl\n*********')
    elif getinfo == 0:
        print('*********\n已退出程序\n*********')
        break
    else:
        print('输入的数字不在可选范围内,请重新输入!')

主要改动说明

  • 修复原check_currency无返回值、冗余10秒等待的问题,调整为直接返回汇率结果
  • 修复多class匹配的写法错误,原代码字典重复key会导致前面的class条件被覆盖
  • 调整汇率触发逻辑,仅当按下3调用valuta方法时才发起实时查询,避免初始化时重复调用
  • 优化交互逻辑,增加输入非数字的异常捕获,替换所有俄文提示为中文
  • 合并重复的类实例,原代码实例化3个Bank对象无意义,统一用1个实例即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:54:05