吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2218|回复: 10
收起左侧

[求助] 初学Pyhon,有几个问题,请大家指正,谢谢。

[复制链接]
diyer6 发表于 2019-9-19 09:44
[Python] 纯文本查看 复制代码
'''
一、背景:

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 09:49
本帖最后由 diyer6 于 2019-9-19 11:33 编辑

这个怎么办?谢谢

1.png
2.png
井右寺 发表于 2019-9-19 10:10
打包exe pyinstaller
1、对齐,没有比较好的办法,用图形化可以。。。或者input("输入?\n__")这样子,把问题放一行,输入提到下一行去
2、这一点都不复杂啊
3、命名这个参照自己的规范,不冲突、不覆盖库函数、清晰、风格一致就行
4、Math,四舍五入还是别的什么,精确到哪一位,由你的需求决定。。。。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
diyer6 + 1 + 1 谢谢@Thanks!

查看全部评分

ssynihao 发表于 2019-9-19 11:22
尾差有没有考虑过,毕竟到最后金额最小单位都是分,四舍五入什么的是要的,那如果出现尾差1分的情况没有处理机制,可能就会剩1分没有分,或者多分1分了

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
diyer6 + 1 + 1 谢谢,确实出现这个情况了,应该怎么处理啊?excel 里面保留两位小数,可以.

查看全部评分

L_yj 发表于 2019-9-19 11:31
格式的话试试这个方式:https://www.cnblogs.com/zhz-8919/p/9767357.html
羊毛丶 发表于 2019-9-19 12:53
最后一行加个 input('按任意键退出')就不会消失了

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
diyer6 + 1 + 1 谢谢啊

查看全部评分

井右寺 发表于 2019-9-19 13:59
diyer6 发表于 2019-9-19 09:49
这个怎么办?谢谢

因为程序已经执行完了啊
执行完了肯定会回收所有的资源的
要么,你就加个input阻塞程序在那个位置
一般这个样子
[Python] 纯文本查看 复制代码
while True:
    #你的逻辑
    _input = input("按Q退出程序,或者任意键继续")
    if _input in ('Q','q'):
        break

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
diyer6 + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| diyer6 发表于 2019-9-29 11:50
ssynihao 发表于 2019-9-19 11:22
尾差有没有考虑过,毕竟到最后金额最小单位都是分,四舍五入什么的是要的,那如果出现尾差1分的情况没有处 ...

谢谢,确实出现这个情况了,应该怎么处理啊?

excel 里面无论什么数字,都可以做到15万。

可在程序里,用 round 不保留小数点,出现了149999??

当然几率很小,但我真的试出来了......

应该怎么解决?谢谢
 楼主| diyer6 发表于 2019-9-29 11:53
[Python] 纯文本查看 复制代码
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  按任意键退出')

ssynihao 发表于 2019-9-29 14:50
diyer6 发表于 2019-9-29 11:50
谢谢,确实出现这个情况了,应该怎么处理啊?

excel 里面无论什么数字,都可以做到15万。

以实际分红分下来的钱减去一开始设定的总分红,存在差值即做尾差处理,少1分或多1分则将这1分分给分红最多的或者随机。尾差大于1分情况下,以1分1分的方式来分尾差,保证公平,做好除法,以差值/0.01,得到处理次数,1分1分分下去,设定好循环机制,保证分完

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
diyer6 + 1 + 1 谢谢啊

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-3-29 19:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表