为了账号安全,请及时绑定邮箱和手机立即绑定

如何将用户表单输入转换为整数或浮点而不收到错误?

如何将用户表单输入转换为整数或浮点而不收到错误?

烙印99 2023-10-06 18:54:13
我正在使用 Python、Flask 和 forex_python.converter 创建一个外汇货币转换器。现在,当用户在主页上提交要转换的货币和金额时,它会将他们定向到一个单独的网页,仅显示其表单输入的值。最终这将显示转换后的外汇金额。如果用户输入了错误的外汇代码或字符串作为金额,他们将被引导回同一页面,并且会使用 Flasks 的 Flash 消息显示错误横幅。我已经能够成功地为错误的外汇代码输入创建错误横幅,但是我正在努力解决如何为无效金额创建错误横幅的问题。理想情况下,如果用户输入的“金额”是字母、空白或符号而不是数字,则横幅将显示“不是有效金额”。现在,横幅将始终出现,但用户数量永远不会转换为浮点数。我通过使用将用户输入的金额转换为浮点数来尝试此操作float(),当金额为整数(或浮点数)时,该方法成功运行,但是如果输入是其他内容,我会收到错误并且我的代码停止。我已经被这个问题困扰了几个小时了,所以如果有人有任何解决这个问题的策略,我将不胜感激。我的 python 代码和 3 个 HTML 页面如下:from flask import Flask, request, render_template, flash, session, redirect, url_forfrom flask_debugtoolbar import DebugToolbarExtensionfrom forex_python.converter import CurrencyRatesapp = Flask(__name__)app.config['SECRET_KEY'] = "secretkey"# store all currency rates into variable as a dictionaryc = CurrencyRates()fx_rates = c.get_rates('USD')# home page@app.route('/', methods=['POST', 'GET'])def home():    return render_template('home.html')# result page. User only arrives to result.html if inputs info correctly@app.route('/result', methods=['POST', 'GET'])def result():    # grab form information from user and change characters to uppercase    forex_from = (request.form.get('forex_from').upper())    forex_to = (request.form.get('forex_to').upper())    # Where I am running into issues.    # I have tried:          #      before_amount = (request.form.get('amount').upper())    #             amount = float(before_amount)    amount = request.form.get('amount')    print(amount)    # if input is invalid bring up banner error    if forex_from not in fx_rates :        flash(f"Not a valid code: {forex_from}")        if forex_to not in fx_rates :        flash(f"Not a valid code: {forex_to}")    if not isinstance(amount, float) :        flash("Not a valid amount.")
查看完整描述

2 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

您可以使用try和except


ask_again = True

while ask_again == True:

    amount = request.form.get('amount')

    try:

        amount = float(amount)

        ask_again = False

    except:

        print('Enter a number')


查看完整回答
反对 回复 2023-10-06
?
梦里花落0921

TA贡献1772条经验 获得超5个赞

您可以使用 try catch 方法来执行此操作。


try:

    val = int(input())

except valueError:

    try:

         val = float(input())

    except valueError:

          #show error message


查看完整回答
反对 回复 2023-10-06
  • 2 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信