鱼C论坛

 找回密码
 立即注册
查看: 2347|回复: 8

新人发帖,三色球习题可以用while语句写吗?

[复制链接]
发表于 2019-8-24 22:25:40 | 显示全部楼层 |阅读模式

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

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

x
有红、黄、绿三种颜色的求,其中红球 3 个,黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。
1.        print('red\tyellow\tblue')
2.        for red in range(0, 4):
3.            for yellow in range(0, 4):
4.                for green in range(2, 7):
5.                    if red + yellow + green == 8:
6.                        # 注意,下边不是字符串拼接,因此不用“+”哦~
7.                        print(red, '\t', yellow, '\t', green)

for作为循环计数语句和while应该可以互换,但是将for in range换成while后发现卡在最后一个while内而无法从头一遍遍的循环....问题应该是range函数,理解的不够深刻。
请问各位,这个三色球能用while结构来写吗?怎样写?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-8-24 22:37:45 From FishC Mobile | 显示全部楼层
可以用 while 写,不过不建议,执行效率比使用 for 循环低。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-24 22:47:01 | 显示全部楼层
zltzlt 发表于 2019-8-24 22:37
可以用 while 写,不过不建议,执行效率比使用 for 循环低。

while 该怎么与数组连用实现全排列呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-24 22:50:06 | 显示全部楼层
get 不到for in range的精髓...看能看懂,但是要我自己设计这种结构我肯定就懵了
我设想的构架如下,用已学的知识无法进行全排列,想知道如何修改成适用于while的循环
print('red\tyellow\tblue')
red = yellow = 0
blue = 2
while red < 4:
    while yellow < 4:
        while blue < 7:
            if red + yellow +blue == 8:
                print(red,'\t',yellow,'\t',blue)
            blue += 1
        yellow += 1
    red += 1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-25 07:58:14 | 显示全部楼层
帮你改了一下程序:

  1. print('red\tyellow\tblue')
  2. red = yellow = 0
  3. blue = 2
  4. while red < 4:
  5.     while yellow < 4:
  6.         while blue < 7:
  7.             if red + yellow + blue == 8:
  8.                 print(red, '\t', yellow, '\t', blue)
  9.             blue += 1
  10.         blue = 0
  11.         yellow += 1
  12.     yellow = 0
  13.     red += 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2019-8-25 07:59:39 | 显示全部楼层
python的for其实是foreach……而且你这么做没什么用
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-25 15:29:19 | 显示全部楼层
可以但建议用for in
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-14 19:54:32 | 显示全部楼层
import random #引入模块

number = []
color = []
count = 1

while count <= 8 :
    i = random.randint (1,12)

    if i in number :
        continue
    else :
        number.append(i)

    if i <= 3 :
        color.append('红')
    elif 3 < i <=6 :
        color.append('黄')
    else :
        color.append('绿')

    count += 1
   
print (color)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-14 19:55:04 | 显示全部楼层
昭乌达 发表于 2020-1-14 19:54
import random #引入模块

number = []

效率应该是很低了吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-17 20:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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