鱼C论坛

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

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

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

major = nums[0]
count = 0
A = 0
B = 0

for each in nums:
    if major == each:
        # 到这一步后为什么进不到if语句块里。
        if nums.count(major) / len(nums) > 3.0:
            A = each
            print(A)
        else:
            B = A
    else:
        major = each

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。显然这不是你的本意。

以下是修正后的代码:
nums = [1, 2, 2, 2, 3, 3, 3, 5, 2, 3]nums.sort()major = nums[0]count = 0A = 0B = 0for each in nums:    if major == each:        count += 1        if count / len(nums) > 0.3:  # 判断 major 在 nums 中出现的比例是否大于 30%            A = each            print(A)    else:        major = eachB = Aprint(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。显然这不是你 ...
想知道小甲鱼最近在做啥?请访问 -> 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。显然这不是你的本意。

以下是修正后的代码:
nums = [1, 2, 2, 2, 3, 3, 3, 5, 2, 3]nums.sort()major = nums[0]count = 0A = 0B = 0for each in nums:    if major == each:        count += 1        if count / len(nums) > 0.3:  # 判断 major 在 nums 中出现的比例是否大于 30%            A = each            print(A)    else:        major = eachB = Aprint(A, B)
修正后的代码中,我修改了条件判断为 if count / len(nums) > 0.3:,这样才能正确地判断 majornums 中出现的比例是否大于 30%。希望这样可以解决你的问题。如果还有其他问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> 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  来统计每个元素出现的次数,然后再进行判断。例如:
from collections import Counter

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

for num, count in counter.items():
    if count > 3:
        print(num)

这样就可以得到在  nums  中出现次数大于 3 的元素了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 01:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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