鱼C论坛

 找回密码
 立即注册
查看: 344|回复: 6

[已解决]第044讲:函数(IV)| 课后测试题 动动手第一题求助

[复制链接]
发表于 2024-4-23 23:21:47 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
为什么我自己写的函数,只会从新排列一次,并且三次打印的结果都一样,不应该啊,求教求教,到底是哪里出问题了
import random

def  fy_shuffle(letter,second:int):
    list1 = list()
    for each in letter:
       list1.append(each)
    list2 = list1
    net_list = list()
    for each in range(second):
        while list1:
            count = random.randrange(len(list1))
            if list1[count] not in net_list:
                net_list.append(list1[count])
                list1.pop(count)
        list1 = list2
        for each in net_list:
            print(each, end='')
        net_list = list()
letter = str(input('请输入字母:'))
fy_shuffle(letter,3)
最佳答案
2024-4-25 10:27:10
while list1: 只有第一次进这个循环了,后面list1都是空的,所以你每次打印结果都一样。你在循环中每次将lst1中的一个元素添加到net_list中,然后将list1中这个元素删掉,此时list2中这个元素也被删掉了,因为list1和list2指向同一个对象,所以你list1 = list2并不会让list2恢复原始数据,此时list1已经空了,不会再循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-23 23:22:04 | 显示全部楼层
你好!你的函数只会打印一次结果,是因为在循环中使用了错误的逻辑。这里有几个问题需要注意:

1. 你在定义`list2`时使用了`list2 = list1`,这实际上是将`list2`与`list1`指向同一个列表对象。也就是说,当你改变`list1`的时候,`list2`也会被改变。所以,你的代码中并没有保存下初始的`letter`,而是一直在对同一个对象进行操作。

2. 在每次循环中,你使用`while`循环来遍历`list1`中的元素,并在满足条件时将元素从`list1`中移除。但是,在第二次循环中,`list1`已经是空列表了,所以循环不会再执行,导致只有第一次循环有结果。

为了解决这个问题,你可以将`list2`创建为一个新的列表,并且在每次循环中重新赋值给`list1`,这样就可以保留初始的`letter`,并在每次循环中都从初始的列表开始。

下面是修改后的代码:
import random

def fy_shuffle(letter, second: int):
    list1 = list(letter)
    net_list = []
    for each in range(second):
        list2 = list(list1)
        while list1:
            count = random.randrange(len(list1))
            if list1 not in net_list:
                net_list.append(list1[count])
                list1.pop(count)
        list1 = list2
        print(''.join(net_list), end='')
        net_list = []

letter = input('请输入字母:')
fy_shuffle(letter, 3)

这样,你就可以在每次循环中打印不同的结果了。希望能帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-23 23:44:43 | 显示全部楼层
       楼主得贴出题目的内容和要求,否则,别人完全不知道你在说什么,和想要干什么。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-23 23:49:04 From FishC Mobile | 显示全部楼层
jackz007 发表于 2024-4-23 23:44
楼主得贴出题目的内容和要求,否则,别人完全不知道你在说什么,和想要干什么。

好的 我马上完善
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-23 23:51:01 From FishC Mobile | 显示全部楼层
FishC 发表于 2024-4-23 23:22
你好!你的函数只会打印一次结果,是因为在循环中使用了错误的逻辑。这里有几个问题需要注意:

1. 你在 ...

另外有个问题,Python中的自动化测试是什么意思? 有没有通俗点的理解,是否可以做一些自动点击搜索和确定的脚本?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-23 23:51:15 | 显示全部楼层
15779327169 发表于 2024-04-23 23:51
另外有个问题,Python中的自动化测试是什么意思? 有 ...


当谈到Python中的自动化测试时,它指的是使用Python编写代码来模拟和执行测试过程,以验证软件或应用程序在不同情况下的功能、性能和稳定性。通俗地说,自动化测试就是让计算机去自动执行一系列预定的测试步骤,而不需要人工干预。

自动化测试可以帮助开发人员和测试人员节省时间和精力,提高测试的效率和准确性。通过编写自动化测试脚本,可以模拟用户的操作,例如点击按钮、输入文本、搜索内容等,从而检查应用程序是否按照预期工作。

对于你提到的自动点击搜索和确定的脚本,是可以通过自动化测试来实现的。你可以使用Python的自动化测试框架(如Selenium)来驱动浏览器,模拟用户在搜索引擎中输入关键字、点击搜索按钮,然后再点击确定等等。这样就可以自动执行这些操作,而无需手动操作。

总结起来,Python中的自动化测试就是利用Python编写的脚本来自动执行测试步骤,以验证软件或应用程序的功能和性能。希望这个解释对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-25 10:27:10 | 显示全部楼层    本楼为最佳答案   
while list1: 只有第一次进这个循环了,后面list1都是空的,所以你每次打印结果都一样。你在循环中每次将lst1中的一个元素添加到net_list中,然后将list1中这个元素删掉,此时list2中这个元素也被删掉了,因为list1和list2指向同一个对象,所以你list1 = list2并不会让list2恢复原始数据,此时list1已经空了,不会再循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 16:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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