Python代码实现购买打折衣服,并且flask框架在web浏览器上输入购买件数,自动计算出价格

2.某商店T恤的价格为35元/件(2件9折,3件以上8折),裤子的价格为120 元/条(2条以上9折).
小明在该店买了3件T恤和2条裤子,请计算并显示小明应该付多少钱?

#yifu.py
from flask import Flask,render_template,request

##2.某商店T恤的价格为35元/件(2件9折,3件以上8折),裤子的价格为120 元/条(2条以上9折).
# 小明在该店买了3件T恤和2条裤子,请计算并显示小明应该付多少钱?

#先简单用Python实现代码逻辑
def caiquanAPI():

    n_T= int (input(' 输入T恤数量:'))
    n_K= int (input(' 输入裤子数量:'))
    if n_K ==1 :
     print(f"{n_K}件裤子:120元")
        
    else:
        total =120*n_K*0.9
        #print(f"{n_K}件裤子:{total}元")
        return f"{n_K}件裤子:{total}元"
    if n_T == 1:
        #print(f"{n_T}件T恤:35元")
         return f"{n_T}件T恤:35元"
    elif n_T == 2:
        total =35*n_T*0.9
        #print(f"{n_T}件T恤:{total}元")
        return f"{n_T}件T恤:{total}元"
    elif n_T >= 3 :
        total =35*n_T*0.8
        #print(f"{n_T}件T恤:{total}元") 
        return f"{n_T}件T恤:{total}元"



##加入flask框架,在浏览器中 展现代码过程,浏览器中自动计算

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route('/caiquanAPI' , methods=['GET', 'POST'])# html 文件里限制了post方法,这里不给方法,会报请求的 URL 不允许使用该方法。
def caiquanAPI():
    #n_T = request.args.get('Txue') # args取get方式参数
    n_T = request.form.get('Txue')# form取post方式参数
    #n_K = request.args.get('kuzi')
    n_K = request.form.get('kuzi')
    total_T = 0
    total_K = 0

    #if n_T is not None:
    if n_T:#添加了最外层if,解决报错#TypeError:“str”和“int”的实例之间不支持“>=”
        n_T = int(n_T)
        if n_T == 1:
            total_T = 35
        elif n_T == 2:
            total_T = 35 * 2 * 0.9
        elif n_T >= 3:
            total_T = 35 * n_T * 0.8
    #else:
        #n_T = 0

    #if n_K is not None 改成if n_K  是为了,输入框为空直接点击计算按钮报错,
    # 报错:#ValueError:以 10 为基数的 int() 文本无效:“”
    #if n_K is not None:
    if n_K :
        n_K = int(n_K)
        if n_K == 1:
            total_K = 120
        elif n_K >= 2:
            total_K = 120 * n_K * 0.9
    #else:
    #   n_K = 0

    total = total_T + total_K

    return render_template('caiquan.html', total=total)

#if __name__ == '__main__':
app.run(debug=True)




'''

代码优化后:

#优化后:

from flask import Flask, render_template, request

app = Flask(__name__)


@app.route('/caiquanAPI', methods=['GET', 'POST'])
def caiquanAPI():
    #if request.method == 'GET':
        #return render_template('caiquan.html', total=0)

    n_T = request.form.get('Txue')
    n_K = request.form.get('kuzi')
    total_T = 0
    total_K = 0

    if n_T:
        n_T = int(n_T)
        if n_T == 1:
            total_T = 35
        elif n_T == 2:
            total_T = 35 * 2 * 0.9
        elif n_T >= 3:
            total_T = 35 * n_T * 0.8

    if n_K:
        n_K = int(n_K)
        if n_K == 1:
            total_K = 120
        elif n_K >= 2:
            total_K = 120 * n_K * 0.9

    total = total_T + total_K

    return render_template('caiquan.html', total=total)

if __name__ == '__main__':
    app.run(debug=True)

再看 html文件:caiquan.html


<!DOCTYPE html>
<html>
<head>
    <title>Shopping Total</title>
</head>
<body>
    <h1>Shopping Total</h1>
    <!--form action=“/center/add” method=“get”; action指定表单发送的地址; method指定数据传送到服务器的方式,
    get会将发送的数据显示在地址栏,post就不会,单论安全而言,post安全性更高 -->
    <form action="/caiquanAPI" method="post"><!--这里的 form  和table层级不能弄反了,不然total怎么也拿不到值-->
        <table>
        
           T恤 <input type="text" id="Txue" name="Txue"><br\>
           裤子 <input type="text" id="kuzi" name="kuzi"><br\>
           <input type="submit" value="计算" name="jisuan"><br\>
        
        </table>
    </form>   
    <p>裤子和T恤总价为: {{ total }}</p>

优化后html文件

<!DOCTYPE html>
<html>
<head>
    <title>Shopping Total</title>
</head>
<body>
    <h1>Shopping Total</h1>
    <form action="/caiquanAPI" method="post">
        <table>
            <tr>
                <td>T恤</td>
                <td><input type="text" id="Txue" name="Txue"></td>
            </tr>
            <tr>
                <td>裤子</td>
                <td><input type="text" id="kuzi" name="kuzi"></td>
            </tr>
        </table>
        <input type="submit" value="计算" name="jisuan">
    </form>
    <p>The total amount to be paid is: {{ total }}</p>
</body>
</html>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值