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

Tkinter使用>运算符报错及阿姆斯特朗数判断重复输出问题求解

修复后的可运行代码及说明

核心修改点

  • 从Entry组件获取输入时,需要调用.get()方法拿到输入字符串,再转换为int类型才能和整数做运算、比较,解决类型报错问题
  • 原代码中将是否为阿姆斯特朗数的判断写在了while循环内部,循环执行3次就会打印3次结果,将该判断移到循环外即可解决重复输出问题
  • 提前创建结果展示用的Label,每次点击仅更新Label的text属性,避免每次点击都新增Label导致界面元素冗余
  • 增加输入异常捕获逻辑,避免用户输入非数字内容时程序崩溃
  • 修复Label实例化时的参数错误,文本内容需要通过text参数传递
from tkinter import *

root = Tk()
root.title("三位数阿姆斯特朗数判断")

label = Label(root, text="请输入一个三位数:")
label.pack(pady=10)

num_entry = Entry(root, width=50, bg="orangered")
num_entry.pack(padx=20)

# 提前创建结果展示Label,后续仅修改文本
result_label = Label(root, text="")
result_label.pack(pady=10)

def myclick():
    Sum = 0
    # 先获取输入内容并做合法性校验
    input_str = num_entry.get().strip()
    # 校验是否为纯数字
    if not input_str.isdigit():
        result_label.config(text="输入无效,请输入100-999之间的三位数")
        return
    num = int(input_str)
    # 校验是否为三位数
    if not (100 <= num < 1000):
        result_label.config(text="你输入的不是三位数,请输入100到999之间的数字")
        return
    temp = num
    while temp > 0:
        digit = temp % 10
        Sum += digit ** 3
        temp //= 10
    # 逻辑判断移到循环外,避免重复输出
    if num == Sum:
        result_label.config(text=f"{num} 是阿姆斯特朗数")
    else:
        result_label.config(text=f"{num} 不是阿姆斯特朗数")

MyButton = Button(root, text="开始判断", command=myclick)
MyButton.pack(pady=5)

root.mainloop()

内容的提问来源于stack exchange,提问作者Osama Bukhari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:36:01