鱼C论坛

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

[已解决]Python问题,为什么得不到结果

[复制链接]
发表于 2023-11-18 13:24:50 | 显示全部楼层 |阅读模式
10鱼币
  1. nums = [1,2,2,2,3,3,3,5,2,3]
  2. nums.sort()

  3. major = nums[0]
  4. count = 0
  5. A = 0
  6. B = 0

  7. for each in nums:
  8.     if major == each:
  9.         # 到这一步后为什么进不到if语句块里。
  10.         if nums.count(major) / len(nums) > 3.0:
  11.             A = each
  12.             print(A)
  13.         else:
  14.             B = A
  15.     else:
  16.         major = each

  17. print(A,B)
复制代码
最佳答案
2023-11-18 13:24:51
在你提供的代码中,存在一个逻辑错误导致无法进入 if 语句块。问题出在条件判断上,if nums.count(major) / len(nums) > 3.0: 这个条件是不太符合预期的。

我理解你想要判断 majornums 中出现的比例是否大于 30%,如果是的话,将 major 赋给变量 A 并打印出来。但是你的判断条件写成了 if nums.count(major) / len(nums) > 3.0:,这个条件的意思是判断 majornums 中出现的次数除以 nums 的长度是否大于 3.0。显然这不是你的本意。

以下是修正后的代码:
  1. nums = [1, 2, 2, 2, 3, 3, 3, 5, 2, 3]
  2. nums.sort()
  3. major = nums[0]
  4. count = 0
  5. A = 0
  6. B = 0
  7. for each in nums:
  8.     if major == each:
  9.         count += 1
  10.         if count / len(nums) > 0.3:  # 判断 major 在 nums 中出现的比例是否大于 30%
  11.             A = each
  12.             print(A)
  13.     else:
  14.         major = each
  15. B = A
  16. print(A, B)
复制代码

修正后的代码中,我修改了条件判断为 if count / len(nums) > 0.3:,这样才能正确地判断 majornums 中出现的比例是否大于 30%。希望这样可以解决你的问题。如果还有其他问题,请随时提问。

最佳答案

查看完整内容

在你提供的代码中,存在一个逻辑错误导致无法进入 if 语句块。问题出在条件判断上,if nums.count(major) / len(nums) > 3.0: 这个条件是不太符合预期的。 我理解你想要判断 major 在 nums 中出现的比例是否大于 30%,如果是的话,将 major 赋给变量 A 并打印出来。但是你的判断条件写成了 if nums.count(major) / len(nums) > 3.0:,这个条件的意思是判断 major 在 nums 中出现的次数除以 nums 的长度是否大于 3.0。显然这不是你 ...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-18 13:24:51 | 显示全部楼层    本楼为最佳答案   
在你提供的代码中,存在一个逻辑错误导致无法进入 if 语句块。问题出在条件判断上,if nums.count(major) / len(nums) > 3.0: 这个条件是不太符合预期的。

我理解你想要判断 majornums 中出现的比例是否大于 30%,如果是的话,将 major 赋给变量 A 并打印出来。但是你的判断条件写成了 if nums.count(major) / len(nums) > 3.0:,这个条件的意思是判断 majornums 中出现的次数除以 nums 的长度是否大于 3.0。显然这不是你的本意。

以下是修正后的代码:
  1. nums = [1, 2, 2, 2, 3, 3, 3, 5, 2, 3]
  2. nums.sort()
  3. major = nums[0]
  4. count = 0
  5. A = 0
  6. B = 0
  7. for each in nums:
  8.     if major == each:
  9.         count += 1
  10.         if count / len(nums) > 0.3:  # 判断 major 在 nums 中出现的比例是否大于 30%
  11.             A = each
  12.             print(A)
  13.     else:
  14.         major = each
  15. B = A
  16. print(A, B)
复制代码

修正后的代码中,我修改了条件判断为 if count / len(nums) > 0.3:,这样才能正确地判断 majornums 中出现的比例是否大于 30%。希望这样可以解决你的问题。如果还有其他问题,请随时提问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-18 13:30:02 | 显示全部楼层
问题出在  nums.count(major) / len(nums) > 3.0  这个条件判断上。在这个条件判断中, nums.count(major)  返回的是  major  在  nums  中出现的次数,而  len(nums)  返回的是  nums  的长度。因此, nums.count(major) / len(nums)  得到的结果是  major  在  nums  中出现的频率。因为  major  的值是  nums  中的一个元素,所以它在  nums  中出现的频率最大也只能是 1.0。所以条件判断  nums.count(major) / len(nums) > 3.0  永远不会成立,导致无法进入  if  语句块。

如果你想要判断某个元素在  nums  中出现的次数是否大于 3,你可以使用  collections.Counter  来统计每个元素出现的次数,然后再进行判断。例如:

  1. from collections import Counter

  2. nums = [1,2,2,2,3,3,3,5,2,3]
  3. counter = Counter(nums)

  4. for num, count in counter.items():
  5.     if count > 3:
  6.         print(num)
复制代码


这样就可以得到在  nums  中出现次数大于 3 的元素了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 12:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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