I am a teacher!

导航

习题解析之:买入股票

【问题描述】

编写一个能计算最大买入股票数量的代码。

股票买入时,交易数量hand必须为100的正整数倍,且交易所及中介机构将收取手续费。本题设定手续费率固定为交易金额price * hand的0.1%,且计算过程中不允许使用round()四舍五入。

初始代码如下:

import randA
s = int(input())
price = randA.randA(s)
#上述代码将随机输出股票名称与价格,不允许修改,否则无法通过评测
#价格price为股票价格,数据类型为float
测试说明
第一行输入一个正整数,初始代码会随机生成并输出某只股票代码,名称和价格price。
第二行输入初始账户金额S_amount,为float型,本题保证输入为正数。
根据股票价格price计算初始账户金额S_amount一次可以买入的股票最大数量hand。

计算初始账户金额S_amount一次可以买入的股票最大数量hand。
下列条件必须满足

price * hand * 1.001 <= S_amount
hand是100的正整数倍
最大可交易的hand
输出:将所有可买数量以列表形式输出,无可买数量则输出空列表;输出金额需要使用str.format()或者f_string保留两位小数。

示例1

输入:
7
20005.86
输出:
301225 恒勃股份 29.46
[100, 200, 300, 400, 500, 600]
使用17693.68买入600股,账户余额为2312.18元。

示例2

输入:
99
100
输出:
600599 ST熊猫 10.69
[]
资金不够,至少需要1070.07元。

 【编程思路】

        创建一个用于保存所有可买数量的列表 ls,初始为空。交易数量 hand 初始值设为 100,即 hand = 100。
        用循环 while price * hand * 1.001 <= S_amount: 进行可买数量的搜索,若当前交易数量可买,则将 hand 增加到列表 ls,同时增大交易数量 hand = hand + 100 ,继续搜索。
        编写的源程序如下:

         image

posted on 2025-11-27 09:54  aTeacher  阅读(29)  评论(0)    收藏  举报