鱼C论坛

 找回密码
 立即注册
查看: 793|回复: 19

怎么IF判断10个数相加等于55并且,10个数不相等

[复制链接]
发表于 2018-8-25 15:26:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
怎么IF判断10个数相加等于55并且,10个数不相等
  1. import random
  2. a=random.randint(1,10)
  3. b=random.randint(1,10)
  4. c=random.randint(1 ,10)
  5. d=random.randint(1,10)
  6. e=random.randint(1,10)
  7. f=random.randint(1,10)
  8. g=random.randint(1,10)
  9. h=random.randint(1,10)
  10. i=random.randint(1,10)
  11. j=random.randint(1,10)
  12. print(a+b+c+d+e+f+g+h+i+j)
  13. aa=a+b+c+d+e+f+g+h+i+j

  14. while True:
  15.     if aa==55 and(a!=b and a!=b and a!=c and a!=d and a!=e and a!=f and a!=g and a!=h and a!=i and a!=j and b!=c and b!=d and b!=e and b!=f and b!=g and b!=h and b!=i and b!=j and c!=d and c!=e and c!=f and c!=g and c!=h and c!=i and
  16.                    c!=j and d!=e and d!=f and d!=g and d!=h and d!=i and d!=j and e!=f and e!=g and e!=h and e!=i and e!=j and f!=g and f!=h and f!=i and f!=j and g!=h and g!=i and g!=j and h!=i and h!=j and i!=j):

  17.         a=random.randint(1,10)
  18.         b=random.randint(1,10)
  19.         c=random.randint(1,10)
  20.         d=random.randint(1,10)
  21.         e=random.randint(1,10)
  22.         f=random.randint(1,10)
  23.         g=random.randint(1,10)
  24.         h=random.randint(1,10)
  25.         i=random.randint(1,10)
  26.         j=random.randint(1,10)
  27.    
  28.         aa=a+b+c+d+e+f+g+h+i+j
  29.         print(aa)      
  30.         break
  31.     if aa!=55:        
  32.         a=random.randint(1,10)
  33.         b=random.randint(1,10)
  34.         c=random.randint(1,10)
  35.         d=random.randint(1,10)
  36.         e=random.randint(1,10)
  37.         f=random.randint(1,10)
  38.         g=random.randint(1,10)
  39.         h=random.randint(1,10)
  40.         i=random.randint(1,10)
  41.         j=random.randint(1,10)
  42.    
  43.         aa=a+b+c+d+e+f+g+h+i+j
  44.         print(aa)
  45.         continue
  46.     if aa==55 and (a!=b and a!=b and a!=c and a!=d and a!=e and a!=f and a!=g and a!=h and a!=i and a!=j and b!=c and b!=d and b!=e and b!=f and b!=g and b!=h and b!=i and b!=j and c!=d and c!=e and c!=f and c!=g and c!=h and c!=i and
  47.                    c!=j and d!=e and d!=f and d!=g and d!=h and d!=i and d!=j and e!=f and e!=g and e!=h and e!=i and e!=j and f!=g and f!=h and f!=i and f!=j and g!=h and g!=i and g!=j and h!=i and h!=j and i!=j):
  48.       
  49.         print(aa)
  50.         print(a,b,c,d,e,f,g,h,i,j)
  51.          
  52.         break

  53.    
  54.         
  55.    
复制代码


怎么修改
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-8-25 15:34:15 | 显示全部楼层
用个数组用循环判断?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-25 15:40:13 | 显示全部楼层
qwertyxxl 发表于 2018-8-25 15:34
用个数组用循环判断?

数组怎么用,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 16:00:06 | 显示全部楼层
本帖最后由 qwertyxxl 于 2018-8-25 16:11 编辑

感觉这个好复杂啊,我也是个新手,要全不不相等的话,我想用个循环,然后定义一个中间变量,每次不相等的话就把中间变量+1;不过这样的话会有重复的比较,感觉还是等大神来完成吧...
for (i = 0; i < 10; i++)
{
k=0;
k[i]=0;
        for (j = 0; j < 10; j++)
        {
                if(a[i]!=a[j])
                k++;
        }
        k[i] = k;
}
if (k[1] = k[2] = ....=9)
{
        for (i = 0; i < 10; i++)
        {
                printf("%d", a[i])
        }

}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 16:11:42 | 显示全部楼层
本帖最后由 凌九霄 于 2018-8-25 16:15 编辑


就一种可能,1+2+3+4+5+6+7+8+9+10 = 55 还搞那么复杂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 16:25:39 | 显示全部楼层
凌九霄 发表于 2018-8-25 16:11
就一种可能,1+2+3+4+5+6+7+8+9+10 = 55 还搞那么复杂

看他那么写应该是有顺序的吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 16:43:43 | 显示全部楼层
本帖最后由 凌九霄 于 2018-8-25 16:46 编辑

如果20个数里选10个不同的,那倒还有些意义,也可简单办到,反正计算机就是瞎猫碰死耗子似的解决。

  1. import random

  2. while True:
  3.     x = random.sample([ x for x in range(1, 20) ], 10)
  4.     if sum(x) == 85:
  5.         print(sorted(x))
  6.         break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 16:53:20 | 显示全部楼层
判断10个不等,
可以if len(set(L))==10
L为你生成的数字列表
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 21:53:55 | 显示全部楼层
本帖最后由 翩跹叶惊鸿 于 2018-8-25 22:15 编辑

你的意思是 随机抽一组10个数,然后判断是否【10个数相加等于55并且10个数不相等】
如果相等就输出这10个数,不相等就再抽一组,直到满足条件是这个意思么?

楼上正解,要想判断10个数是否相等,可以set()把列表转换成集合,集合会自动清理重复的数据,然后再判断是否还有10个数就行了。

还可以加个 i,看看是第几次才达成条件的。


  1. import random

  2. i = 1
  3. while True:
  4.     a = []
  5.     for j in range(0,10):
  6.         a.append(random.randint(1,10))
  7.     if sum(a) == 55:
  8.         if len(set(a)) == 10:
  9.             print(a)
  10.             print(i)
  11.             break
  12.     i = i + 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 22:47:36 From FishC Mobile | 显示全部楼层
你这写法,选一百个数,估计懵逼了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 22:48:54 From FishC Mobile | 显示全部楼层
直接用递归
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-26 07:58:11 | 显示全部楼层
翩跹叶惊鸿 发表于 2018-8-25 21:53
你的意思是 随机抽一组10个数,然后判断是否【10个数相加等于55并且10个数不相等】
如果相等就输出这10个 ...
  1. import random

  2. i = 1
  3. while True:
  4.     a = []
  5.     for j in range(0,10):
  6.         a.append(random.randint(1,10))
  7.     if sum(a) == 55:
  8.         if len(set(a)) == 10:
  9.             print(a)
  10.             print(i)

  11.             while True:
  12.                
  13.                 if a==[2, 7, 4, 8, 6, 1, 10, 3, 9, 5]:
  14.                     print("True")
  15.                
  16.                     break

  17.     i = i + 1

复制代码


怎么猜下期出什么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-26 09:46:25 | 显示全部楼层
过默 发表于 2018-8-26 07:58
怎么猜下期出什么?

没懂你的意思啊。。。抽出了第一组满足条件的,还要再抽一次?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-26 10:22:12 | 显示全部楼层
翩跹叶惊鸿 发表于 2018-8-26 09:46
没懂你的意思啊。。。抽出了第一组满足条件的,还要再抽一次?
  1. import random
  2. while True:
  3.     i = 1
  4.     while True:
  5.         a = []
  6.         for j in range(0,10):
  7.             a.append(random.randint(1,10))
  8.         if sum(a) == 55:
  9.             if len(set(a)) == 10:
  10.                 print(a)
  11.                 print(i)

  12.                 break
  13.                     


  14.         i = i + 1
  15.         
  16.     print(a)
  17.     while True:
  18.         
  19.         b=[]
  20.         for j in range(0,10):
  21.             b.append(random.randint(1,10))
  22.         
  23.         if sum(b)==55:
  24.             if len(set(b))==10:
  25.                 print(b)

  26.                 break

  27.     if a!=b:
  28.         continue
  29.     else:
  30.         break
复制代码

怎么知道出什么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-26 11:12:51 | 显示全部楼层
本帖最后由 翩跹叶惊鸿 于 2018-8-26 11:19 编辑
过默 发表于 2018-8-26 10:22
怎么知道出什么


要抽出两组数?并判断是否相等?
PS:我运行了很久还没弄出来。。。这个概率太小了。。。

  1. import random

  2. while True:
  3.     while True:
  4.         a = []
  5.         for i in range(0, 10):
  6.             a.append(random.randint(1, 10))
  7.         if sum(a) == 55:
  8.             if len(set(a)) == 10:
  9.                 break
  10.     while True:
  11.         b = []
  12.         for j in range(0, 10):
  13.             b.append(random.randint(1, 10))
  14.         if sum(b) == 55:
  15.             if len(set(b)) == 10:
  16.                 break
  17.     if a == b:
  18.         break
  19.         
  20. print(a)
  21. print(b)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-26 12:41:12 | 显示全部楼层
翩跹叶惊鸿 发表于 2018-8-26 11:12
要抽出两组数?并判断是否相等?
PS:我运行了很久还没弄出来。。。这个概率太小了。。。
  1. import random
  2. i=1
  3. while True:
  4.    
  5.     while True:
  6.         a = []
  7.         b=[]
  8.         i=1
  9.         for i in range(0, 10):
  10.             a.append(random.randint(1, 10))
  11.         if sum(a) == 55:
  12.             if len(set(a)) == 10:
  13.                 break

  14.         for j in range(0, 5):
  15.             b.append(random.randint(1, 10))
  16.            
  17.         if len(set(b))==5:
  18.             break
  19.     if a[0] in b:
  20.         if a[0] in [1,2,3,4,5]:
  21.             i=i+1
  22.             print("小")
  23.             break
  24.         
  25.         if a[0] in [6,7,8,9,10]:
  26.             i=i+1
  27.             print("大")
  28.             break
  29. print(a,i)
  30. print(b)
复制代码


a怎么重复了,a[0]=b中的5个数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-26 12:59:53 | 显示全部楼层
过默 发表于 2018-8-26 12:41
a怎么重复了,a[0]=b中的5个数

a[0] in b 这个条件是绝对会成立的,因为b是不重复的1-10,a[0]又是1-10之一,这个肯定是成立的啊。
于是 i 就肯定等于2,还加这个进去干嘛。。a[0]是列表a里面的第一个数,怎么可能等于5个数?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-26 13:01:42 | 显示全部楼层
翩跹叶惊鸿 发表于 2018-8-26 12:59
a[0] in b 这个条件是绝对会成立的,因为b是不重复的1-10,a[0]又是1-10之一,这个肯定是成立的啊。
于 ...
  1. import random
  2. d=1
  3. while True:
  4.    
  5.     while True:
  6.         a = []
  7.         
  8.         
  9.         for i in range(0, 10):
  10.             a.append(random.randint(1, 10))
  11.         if sum(a) == 55:
  12.             if len(set(a)) == 10:
  13.                 break
  14.     while True:
  15.         b=[]
  16.         for j in range(0, 5):
  17.             
  18.             b.append(random.randint(1, 10))
  19.         if len(set(b))==5:
  20.             break

  21.     d=d+1
  22.     if a[0] in b:
  23.         if a[0] in [1,2,3,4,5]:
  24.             
  25.             print("小")
  26.             break
  27.         
  28.         if a[0] in [6,7,8,9,10]:
  29.             
  30.             print("大")
  31.             break
  32. print(a,d)
  33. print(b)
复制代码


等于了,猜中了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-26 13:26:38 | 显示全部楼层
过默 发表于 2018-8-26 13:01
等于了,猜中了

真没明白你的意思。什么等于?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-27 16:50:24 | 显示全部楼层
判断10个数是不是又重复,用
  1. if len(set(list))== 10:
复制代码

判断10个数字加起来是不是等于55,用
  1. if sum(list)  == 55:
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-4 02:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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