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
相关产品推荐
相关产品推荐

