鱼C论坛

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

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

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

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

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

x
怎么IF判断10个数相加等于55并且,10个数不相等
import random
a=random.randint(1,10)
b=random.randint(1,10)
c=random.randint(1 ,10)
d=random.randint(1,10)
e=random.randint(1,10)
f=random.randint(1,10)
g=random.randint(1,10)
h=random.randint(1,10)
i=random.randint(1,10)
j=random.randint(1,10)
print(a+b+c+d+e+f+g+h+i+j)
aa=a+b+c+d+e+f+g+h+i+j

while True:
    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
                   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):

        a=random.randint(1,10)
        b=random.randint(1,10)
        c=random.randint(1,10)
        d=random.randint(1,10)
        e=random.randint(1,10)
        f=random.randint(1,10)
        g=random.randint(1,10)
        h=random.randint(1,10)
        i=random.randint(1,10)
        j=random.randint(1,10)
    
        aa=a+b+c+d+e+f+g+h+i+j
        print(aa)       
        break
    if aa!=55:        
        a=random.randint(1,10)
        b=random.randint(1,10)
        c=random.randint(1,10)
        d=random.randint(1,10)
        e=random.randint(1,10)
        f=random.randint(1,10)
        g=random.randint(1,10)
        h=random.randint(1,10)
        i=random.randint(1,10)
        j=random.randint(1,10)
    
        aa=a+b+c+d+e+f+g+h+i+j
        print(aa)
        continue
    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
                   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):
      
        print(aa)
        print(a,b,c,d,e,f,g,h,i,j)
          
        break

    
        
    

怎么修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-25 15:34:15 | 显示全部楼层
用个数组用循环判断?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

数组怎么用,
想知道小甲鱼最近在做啥?请访问 -> 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])
        }

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


就一种可能,1+2+3+4+5+6+7+8+9+10 = 55 还搞那么复杂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

看他那么写应该是有顺序的吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

while True:
    x = random.sample([ x for x in range(1, 20) ], 10)
    if sum(x) == 85:
        print(sorted(x))
        break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 16:53:20 | 显示全部楼层
判断10个不等,
可以if len(set(L))==10
L为你生成的数字列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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

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

import random

i = 1
while True:
    a = []
    for j in range(0,10):
        a.append(random.randint(1,10))
    if sum(a) == 55:
        if len(set(a)) == 10:
            print(a)
            print(i)
            break
    i = i + 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 22:47:36 From FishC Mobile | 显示全部楼层
你这写法,选一百个数,估计懵逼了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 22:48:54 From FishC Mobile | 显示全部楼层
直接用递归
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

i = 1
while True:
    a = []
    for j in range(0,10):
        a.append(random.randint(1,10))
    if sum(a) == 55:
        if len(set(a)) == 10:
            print(a)
            print(i)

            while True:
                
                if a==[2, 7, 4, 8, 6, 1, 10, 3, 9, 5]:
                    print("True")
                
                    break

    i = i + 1
 

怎么猜下期出什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

没懂你的意思啊。。。抽出了第一组满足条件的,还要再抽一次?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

                break
                    


        i = i + 1
        
    print(a)
    while True:
        
        b=[]
        for j in range(0,10):
            b.append(random.randint(1,10))
        
        if sum(b)==55:
            if len(set(b))==10:
                print(b)

                break

    if a!=b:
        continue
    else:
        break
怎么知道出什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

while True:
    while True:
        a = []
        for i in range(0, 10):
            a.append(random.randint(1, 10))
        if sum(a) == 55:
            if len(set(a)) == 10:
                break
    while True:
        b = []
        for j in range(0, 10):
            b.append(random.randint(1, 10))
        if sum(b) == 55:
            if len(set(b)) == 10:
                break
    if a == b:
        break
        
print(a)
print(b)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

        for j in range(0, 5):
            b.append(random.randint(1, 10))
           
        if len(set(b))==5:
            break
    if a[0] in b:
        if a[0] in [1,2,3,4,5]:
            i=i+1
            print("小")
            break
        
        if a[0] in [6,7,8,9,10]:
            i=i+1
            print("大")
            break
print(a,i)
print(b)

a怎么重复了,a[0]=b中的5个数
想知道小甲鱼最近在做啥?请访问 -> 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个数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

等于了,猜中了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

真没明白你的意思。什么等于?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-27 16:50:24 | 显示全部楼层
判断10个数是不是又重复,用
if len(set(list))== 10:
判断10个数字加起来是不是等于55,用
if sum(list)  == 55:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 16:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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