初学Pyhon,有几个问题,请大家指正,谢谢。
'''一、背景:
1、现有15万元奖励资金,要分配给4户企业,但不能平均分配。
2、4户企业都不同程度自己购买了新设备。
3、领导决定:(1)哪户企业自己花的钱多,就给哪户企业分配的多。
(2)15万元,一毛钱都不能剩,全部分配给企业。
二、思路:奖励总额÷(4户企业投资总和) ×该企业投资额
三、求助:初学Pyhon,有几个问题,请大家指正,谢谢。
1、因为4户企业名称长短不一,为了好看,怎么让 投资额 都右对齐?我都是用空格敲的...
2、需求很简单,我感觉我代码写的很繁复,有没有更简便的写法?
3、我英语小学水平,名字不会起,都是百度翻译的,麻烦看下我这种起名方式对不对?应该怎样改进?
4、这段程序下来,企业分得的金额,小数点后面数字太多,钱现金不好给。
但是企业花钱肯定不是整数,怎么能让钱好给,又能把15万元分的一毛不剩?
'''
print(' '*5 + '计算4户企业奖励分配','\n')
reward = 150000 # 奖励资金15万元
shendu_yinxian = float(input('申都引线 请输入您的投资额:'))# 取得 申都引线 的投资额
sen_huang = float(input(' 森煌 请输入您的投资额:')) # 取得 森煌 的投资额
sheng_de_xing = float(input('盛德兴 请输入您的投资额:')) # 取得 盛德兴 的投资额
jin_feng = float(input(' 金凤 请输入您的投资额:')) # 取得 金凤 的投资额
print()
print('申都引线 的投资额为:',shendu_yinxian,'\n',
' 森煌 的投资额为:',sen_huang,'\n',
' 盛德兴 的投资额为:',sheng_de_xing,'\n'
' 金凤 的投资额为:',jin_feng)
four_sum = shendu_yinxian+sen_huang+sheng_de_xing+jin_feng # 计算取得 4户企业 的投资总额
print('\n','4户烟花爆竹生产企业投资总和为:',four_sum)
weight = reward/(shendu_yinxian+sen_huang+sheng_de_xing+jin_feng)# 计算取得 4户企业 的分配权重或比例(专业术语不知道叫啥?)
print('\n','奖励分配权重为:',weight)
reward_shendu_yinxian = weight * shendu_yinxian # 计算取得 申都引线 的奖励分配
reward_sen_huang = weight * sen_huang # 计算取得 森煌 的奖励分配
reward_sheng_de_xing = weight * sheng_de_xing # 计算取得 盛德兴 的奖励分配
reward_jin_feng = weight * jin_feng # 计算取得 金凤 的奖励分配
print('\n','申都引线 的奖励金额为:',reward_shendu_yinxian,'\n',
' 森煌 的奖励金额为:',reward_sen_huang,'\n',
'盛德兴 的奖励金额为:',reward_sheng_de_xing,'\n'
' 金凤 的奖励金额为:',reward_jin_feng)
reward_four_sum = reward_shendu_yinxian+reward_sen_huang+ \
reward_sheng_de_xing+reward_jin_feng # 计算奖励分配的资金总和(15万元一毛都不能剩)
print('\n','4户企业分配的奖励总和为:',reward_four_sum)
本帖最后由 diyer6 于 2019-9-19 11:33 编辑
这个怎么办?谢谢
打包exe pyinstaller
1、对齐,没有比较好的办法,用图形化可以。。。或者input("输入?\n__")这样子,把问题放一行,输入提到下一行去
2、这一点都不复杂啊
3、命名这个参照自己的规范,不冲突、不覆盖库函数、清晰、风格一致就行
4、Math,四舍五入还是别的什么,精确到哪一位,由你的需求决定。。。。 尾差有没有考虑过,毕竟到最后金额最小单位都是分,四舍五入什么的是要的,那如果出现尾差1分的情况没有处理机制,可能就会剩1分没有分,或者多分1分了 格式的话试试这个方式:https://www.cnblogs.com/zhz-8919/p/9767357.html 最后一行加个 input('按任意键退出')就不会消失了
diyer6 发表于 2019-9-19 09:49
这个怎么办?谢谢
因为程序已经执行完了啊
执行完了肯定会回收所有的资源的
要么,你就加个input阻塞程序在那个位置
一般这个样子
while True:
#你的逻辑
_input = input("按Q退出程序,或者任意键继续")
if _input in ('Q','q'):
break ssynihao 发表于 2019-9-19 11:22
尾差有没有考虑过,毕竟到最后金额最小单位都是分,四舍五入什么的是要的,那如果出现尾差1分的情况没有处 ...
谢谢,确实出现这个情况了,应该怎么处理啊?
excel 里面无论什么数字,都可以做到15万。
可在程序里,用 round 不保留小数点,出现了149999??
当然几率很小,但我真的试出来了......
应该怎么解决?谢谢 print('\n\n',' '*5 + '计算4户生产企业奖励分配','\n')
reward = 150000 # 奖励资金15万元
shendu_yinxian = float(input('申都引线 请输入您的投资额:'))# 取得 申都引线 的投资额
sen_huang = float(input(' 森煌 请输入您的投资额:')) # 取得 森煌 的投资额
sheng_de_xing = float(input('盛德兴 请输入您的投资额:')) # 取得 盛德兴 的投资额
jin_feng = float(input(' 金凤 请输入您的投资额:')) # 取得 金凤 的投资额
print()
print('申都引线 的投资额为:',shendu_yinxian,'\n',
' 森煌 的投资额为:',sen_huang,'\n',
' 盛德兴 的投资额为:',sheng_de_xing,'\n'
' 金凤 的投资额为:',jin_feng)
four_sum = shendu_yinxian+sen_huang+sheng_de_xing+jin_feng # 计算取得 4户企业 的投资总额
print('\n','4户生产企业投资总和为:',four_sum)
weight = reward/(shendu_yinxian+sen_huang+sheng_de_xing+jin_feng)# 计算取得 4户企业 的分配权重或比例(专业术语不知道叫啥?)
print('\n','奖励分配权重为:',weight)
reward_shendu_yinxian = round(weight * shendu_yinxian) # 计算取得 申都引线 的奖励分配
reward_sen_huang = round(weight * sen_huang) # 计算取得 森煌 的奖励分配
reward_sheng_de_xing = round(weight * sheng_de_xing) # 计算取得 盛德兴 的奖励分配
reward_jin_feng = round(weight * jin_feng) # 计算取得 金凤 的奖励分配
print('\n','申都引线 的奖励金额为:',reward_shendu_yinxian,'\n',
' 森煌 的奖励金额为:',reward_sen_huang,'\n',
'盛德兴 的奖励金额为:',reward_sheng_de_xing,'\n'
' 金凤 的奖励金额为:',reward_jin_feng)
reward_four_sum = reward_shendu_yinxian+reward_sen_huang+ \
reward_sheng_de_xing+reward_jin_feng # 计算奖励分配的资金总和(15万元一毛都不能剩)
print('\n','4户生产企业分配的奖励总和为:',reward_four_sum)
input('\n\n按任意键退出')
diyer6 发表于 2019-9-29 11:50
谢谢,确实出现这个情况了,应该怎么处理啊?
excel 里面无论什么数字,都可以做到15万。
以实际分红分下来的钱减去一开始设定的总分红,存在差值即做尾差处理,少1分或多1分则将这1分分给分红最多的或者随机。尾差大于1分情况下,以1分1分的方式来分尾差,保证公平,做好除法,以差值/0.01,得到处理次数,1分1分分下去,设定好循环机制,保证分完
页:
[1]
2