鱼C论坛

 找回密码
 立即注册
查看: 1010|回复: 2

21讲动动手答案有问题

[复制链接]
发表于 2024-1-25 11:39:33 | 显示全部楼层 |阅读模式

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

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

x
nums = [2, 2, 2, 2, 4, 2, 3, 6, 2]
   
nums.sort()
length = len(nums)
half = nums[length // 2]
count = 0
   
for each in nums:
    if each == half:
        count += 1
if count > length / 2:
    print("存在主要元素,是:", half)
else:
    print("不存在主要元素!")

------------------------------------------------------------以上是动动手的答案,但输出结果都是不存在主要元素。其中我看不太懂这一段代码的意思。
count = 0
   
for each in nums:
    if each == half:
        count += 1

---------------------------------------------------------
于是我自己写了一段如下:
nums = [2, 2, 2, 2, 4, 2, 3, 6, 2]
nums.sort()
length = len(nums)

half = length//2
n = nums[half]
if nums.count(n) > len(nums)//2:
    print("存在主要元素,是",n)
else:
    print("不存在主要元素!")
------------------------------------------------------以上是我写的代码,没有用到循环体。求大神指教这个代码如何改成循环体的,如何理解循环体,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-25 11:41:20 | 显示全部楼层
首先,让我们仔细看一下第一段代码:

nums.sort()  # 对nums进行排序
length = len(nums)  # 获取nums的长度
half = nums  # 将nums赋值给half
count = 0

for each in nums:  # 遍历nums中的每一个元素
    if each == half:  # 如果元素等于half
        count += 1  # 计数器加1

if count > length / 2:  # 如果计数器大于length的一半
    print("存在主要元素,是:", half)
else:
    print("不存在主要元素!")

这段代码存在几个问题:
1. 在排序后,half应该是中间位置的元素,而不是整个列表。
2. 对于比较每个元素是否等于half的部分,应该使用 "each == half",而不是 "each == half"。
3. 这段代码没有考虑到如果列表为空的情况。

以下是修正后的代码:

nums = [2, 3, 2, 2, 4, 2, 5, 2, 6]

nums.sort()
length = len(nums)
half = nums[length // 2]
count = 0

for each in nums:
    if each == half:
        count += 1

if count > length / 2:
    print("存在主要元素,是:", half)
else:
    print("不存在主要元素!")

现在关于第二段代码,你已经很接近正确答案了。但是,你需要在计数之前确定n的值,然后在循环体内逐个进行比较,并将计数器递增。以下是修改后的代码:

nums = [2, 3, 2, 2, 4, 2, 5, 2, 6]
nums.sort()
length = len(nums)

half = length // 2
count = 0

for n in nums:
    if n == nums[half]:
        count += 1

if count > length // 2:
    print("存在主要元素,是", nums[half])
else:
    print("不存在主要元素!")

希望这可以帮助你理解循环体的概念和如何将你的代码改造为一个循环体。

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

使用道具 举报

发表于 2024-1-25 12:03:26 | 显示全部楼层
本帖最后由 jackz007 于 2024-1-25 13:47 编辑

        答案是正确的,没有任何的问题
nums = [2, 2, 2, 2, 4, 2, 3, 6, 2]
nums.sort()                           # 对 nums 按从小到大的顺序进行排序
length = len(nums)
half = nums[length // 2]              # 获取排序后 nums 所有 9 个元素中,位置居中(索引为 4)那个元素的数值,就是 2
count = 0                             # 初始化计数器的值为 0
   
for each in nums:                     # 循环枚举 nums 中的每一个元素
    if each == half:                  # 如果当前被枚举到的元素数值与 half 相同(就是 2)
        count += 1                    # 计数器的数值加 1
if count > length // 2:               # 如果 nums 中,half 的计数值超过 nums 中总元素数量(9)的一半(4)   
    print("存在主要元素,是:", half)
else:
    print("不存在主要元素!")
        只要能达到目的,通过什么途径并不重要。
        循环就是设置一个循环条件,只要条件成立,就反复执行一句或多句代码。循环有 for 循环和 while 循环两种。
nums = [2, 2, 2, 2, 4, 2, 3, 6, 2]
for x in nums:
    print(x)
        这是一个 for 循环,一共会循环 9 次,循环变量 x 在循环中会依次等于 2、2、2、2、4、2、3、6、2,只要 nums 中还有元素没有被枚举到就循环,反之,当 nums 中 9 个元素都被枚举到的时候,循环就会结束。
nums = [2, 2, 2, 2, 4, 2, 3, 6, 2]
k = 0                  # 初始化循环变量为 0
while k < len(nums) :  # 只要 k < 9 就循环
    print(nums[k])
    k += 1             # 循环中要调整循环变量
        这是一个 while 循环,功能与前面的 for 循环完全相同。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 19:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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