You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python导入模块后while循环中程序仅执行一次的问题求助

问题原因

你的run.py存在两个核心问题:

  1. 导入main模块时,main.py里的compare()会被立即执行一次,但循环中的main只是引用模块对象,不会触发函数重新运行。
  2. 用while i >=1实现无限循环的写法冗余,直接用while True更简洁直观。
解决方案

方案1:修改run.py,主动调用函数

将run.py修改为以下代码,每次循环主动调用main模块里的compare()函数:

import main

while True:
    main.compare()
    # 可选:添加退出机制,避免无限循环无法终止
    choice = input("输入'y'继续,其他字符退出:")
    if choice.lower() != 'y':
        break

方案2:优化main.py为可复用模块(推荐)

先调整main.py,让它既可以单独运行,也能作为模块导入时不自动执行函数:

def compare():
    # 注意:将输入转为数值类型,避免字符串字典序比较的错误
    x = float(input("Enter the First Number: "))
    y = float(input("Enter the Second Number: "))
    z = float(input("Enter the Third Number: "))
    numbers = [x,y,z]

    if numbers[0] == numbers[1]:
        if numbers[0] == numbers[2]:
            print("Numbers are Equal which is = ",numbers[0])
        else:
            print("The Maximum number is = ",max(numbers))
            print("The Minimum number is = ",min(numbers))
    else:
        print("The Maximum number is = ",max(numbers))
        print("The Minimum number is = ",min(numbers))

# 只有直接运行main.py时才执行函数
if __name__ == "__main__":
    compare()

再修改run.py:

import main

while True:
    main.compare()
    if input("按'q'退出,其他键继续:").lower() == 'q':
        break

额外优化提示

原代码中input()获取的是字符串,直接用max()/min()会按字符串字典序比较(比如"10"会比"2"小),所以建议将输入转为float或int类型,确保数值比较正确。

内容的提问来源于stack exchange,提问作者Mohammed Al Yahyai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 09:02:52