设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 6321|回复: 3
打印 上一主题 下一主题

每日一坑1疑问

[复制链接]

1

主题

0

好友

9

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2017-1-4 15:04:31 来自手机 |只看该作者 |正序浏览
初学者,写了下每日一坑1的解答,但是执行结果不理想。请大家帮忙分析下问题出在哪里了,谢谢
class Lottery:
    def __init__(self,m,n):
        self.m=m+1
        self.n=n
    def Doublecolor(self):
        import random
        self.a={}
        for i in range(1,self.m):
            b=random.randint(1,self.n)
            if b not in self.a:
                self.a[i]=b
            else:
                self.m=self.m+1
        return self.a
c=Lottery(15,40)
print c.Doublecolor()
print c.m
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2017-1-5 19:16:00 |只看该作者
小灰飞 发表于 2017-1-4 21:08
谢谢您。我本来想的是,如果某次随机生成的数与已经生成过的数有重复,就增加一次随机生成,所以用了self ...

把for循环改成while,用一个数值来记录循环次数,如果产生了重复的,就不算次数,否则减一,直到全部结束。

或者直接用最终列表的元素个数来作为while的条件
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

9

积分

新手上路

Rank: 1

板凳
发表于 2017-1-4 21:08:37 来自手机 |只看该作者
crossin先生 发表于 2017-1-4 20:55
还可以啊,你都用上面向对象了。
只是你取数的逻辑不清楚,感觉被你弄复杂了。我没看懂你 self.m = self.m  ...

谢谢您。我本来想的是,如果某次随机生成的数与已经生成过的数有重复,就增加一次随机生成,所以用了self.m=self.m+1。但是执行结果显示没有增加随机生成次数。请教下,如果按目前这个思路,要怎么改呢?
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2017-1-4 20:55:39 |只看该作者
还可以啊,你都用上面向对象了。
只是你取数的逻辑不清楚,感觉被你弄复杂了。我没看懂你 self.m = self.m +1 是想起什么作用

其实有个方法 random.sample ,可以更简单的来做这个题
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-22 04:20 , Processed in 0.013290 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部