设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【每日一坑 1】 随机取数

  [复制链接]

3

主题

1

好友

111

积分

注册会员

Rank: 2

楼主
发表于 2021-2-10 21:36:26 |显示全部楼层
写了一下午和一晚上,总算把坑都给填完了

这个程序可以解决重复出现数字的问题

希望老师能看看,更欢迎提出建议和意见

谢谢啦
  1. import random

  2. #从1~n中随机取m个数
  3. print('从1~n中随机取m个数')
  4. print('tips:m,n都必须为正整数且1≤m≤n')
  5. global m
  6. global n
  7. m = float(input('enter m:'))
  8. n = float(input('enter n:'))
  9. #此处暂时不转换为整数形式以防止输入内容不符合条件
  10. #下面这个while循环可以使m,n最终均为符合条件的值
  11. while (m<1) or (n<1) or (n<m) or (int(m % 1) is not 0) or (int(n % 1) is not 0):
  12.     print('注意!m,n都必须为正整数且1≤m≤n!')
  13.     m = float(input('enter m again:'))
  14.     n = float(input('enter n again:'))
  15.     if (1 <= m <= n) and (int(m % 1) is 0) and (int(n % 1) is 0):
  16.         break
  17. m = int(m)
  18. n = int(n)
  19. result_list = []
  20. for i in range(m):
  21.     result_list.append(random.randint(1, n))
  22. # print(result_list)
  23. #下面这个循环可以使结果中的数不重复
  24. while len(set(result_list)) < m:
  25.     daiti = []
  26.     for a in set(result_list):
  27.         daiti.append(a)
  28.     result_list = daiti
  29.     result_list.append(random.randint(1, n))
  30. print('\n结果为:')
  31. print(result_list)
复制代码
回复

使用道具 举报

3

主题

1

好友

111

积分

注册会员

Rank: 2

沙发
发表于 2021-2-10 21:38:54 |显示全部楼层
FERRYMAN 发表于 2021-2-10 21:36
写了一下午和一晚上,总算把坑都给填完了

这个程序可以解决重复出现数字的问题

老师可以仔细讲讲“集合”这个东西吗?

写程序的时候用了set(),然后就被绕晕了
回复

使用道具 举报

3

主题

1

好友

111

积分

注册会员

Rank: 2

板凳
发表于 2021-2-11 15:13:33 |显示全部楼层
crossin先生 发表于 2021-2-11 15:01
判断一个字符串是正整数直接用 .isnumeric() 就可以了

set和列表类似,但是 无序、不重复(有重复的会被 ...

我原来还没听说过.isnumeric()呢,谢谢老师!
回复

使用道具 举报

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

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

GMT+8, 2024-5-5 21:57 , Processed in 0.017191 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部