15779327169 发表于 2024-4-23 23:21:47

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

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

deffy_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 not in net_list:
                net_list.append(list1)
                list1.pop(count)
      list1 = list2
      for each in net_list:
            print(each, end='')
      net_list = list()
letter = str(input('请输入字母:'))
fy_shuffle(letter,3)

FishC 发表于 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)
                list1.pop(count)
      list1 = list2
      print(''.join(net_list), end='')
      net_list = []

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2024-4-23 23:44:43

       楼主得贴出题目的内容和要求,否则,别人完全不知道你在说什么,和想要干什么。

15779327169 发表于 2024-4-23 23:49:04

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

好的 我马上完善

15779327169 发表于 2024-4-23 23:51:01

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

1. 你在 ...

另外有个问题,Python中的自动化测试是什么意思? 有没有通俗点的理解,是否可以做一些自动点击搜索和确定的脚本?

FishC 发表于 2024-4-23 23:51:15

15779327169 发表于 2024-04-23 23:51
另外有个问题,Python中的自动化测试是什么意思? 有 ...

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

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

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

aix1a 发表于 2024-4-25 10:27:10

while list1: 只有第一次进这个循环了,后面list1都是空的,所以你每次打印结果都一样。你在循环中每次将lst1中的一个元素添加到net_list中,然后将list1中这个元素删掉,此时list2中这个元素也被删掉了,因为list1和list2指向同一个对象,所以你list1 = list2并不会让list2恢复原始数据,此时list1已经空了,不会再循环
页: [1]
查看完整版本: 第044讲:函数(IV)| 课后测试题 动动手第一题求助