Successfully! 2022-08-31 21:25 采纳率: 100%
浏览 44
已结题

用if定义了变量,报错?(python)

懵懵
问题遇到的现象和发生背景

我在python中编辑了一个程序,代码如下。

import tkinter
import os
import time
from tkinter import *
import tkinter.ttk as ttk
from tkinter import messagebox as msgbox
from random import random
import easygui as gui

__email__ = "qyq999999999@outlook.com"
__author__ = "明亮的夜空 powered by 钱胤桥"
__version__ = "new 1.0.1"

secondask=gui.indexbox('要选择几次呢?', '挑战选择', ['five', 'six','seven','eight'])
if secondask=='five':
    second=5
elif secondask=='six':
    second=6
elif secondask=='seven':
    second=7
elif secondask=='eight':
    second=8



def text_change():
    OK["state"] = NORMAL if txt.get().strip() else DISABLED


def btn(event=None):
    global n, caidui, cishu
    if caidui:
        reset()  # 判断是否已猜对
    else:
        s = txt.get()
        if not s:
            return

        if int(s) == n:
            f['text'] = "猜对了,您真聪明!"
            OK['text'] = "再来一次"
            OK['width'] = 8
            caidui = True
        else:  # 如果猜错了
            if cishu <= 0:
                msgbox.showinfo("提示", "您的次数已用完,下次再来吧。\n正确答案:"+str(n))
                quit()
            else:
                c['text'] = "您剩余的次数:"+str(cishu)
            if int(s) < n:  # 如果输入的数小了
                if int(s) + 10 > n:
                    if int(s) + 3 > n:
                        f['text'] = "小了一点点!"
                    else:
                        f['text'] = "小了一点,请再猜!"
                else:
                    f['text'] = "你猜得太小了,请再猜!"
            else:  # 如果输入的数大了
                if int(s) - 10 > n:
                    f['text'] = "你猜得太大了,请再猜!"
                else:
                    if int(s) - 3 > n:
                        f['text'] = "大了一点,请再猜!"
                    else:
                        f['text'] = "大了一点点!"
            txt.focus_force()
        cishu -= 1


def reset():  # 重置
    global n, caidui, second
    n = int(random()*100+1)  # 生成一个随机数
    f['text'] = ""  # 重设控件属性
    f['width'] = 5
    OK['text'] = "确定"
    caidui = False
    c['text'] = "您剩余的次数:"+str(second)


if __name__ == "__main__":
    window = Tk()  # 创建一个窗口
    window.title("猜数游戏")
    window.geometry('250x108')
    try:
        app_path = os.path.split(os.path.realpath(__file__))[0]  # 获取程序路径
        window.iconbitmap(app_path+r"\图标\数字.ico")  # 加载窗口图标
    except:
        pass  # 错误处理

    Label(text="有一个100内的整数给你猜", font="楷体").pack(fill=X)
    inputbox = Frame(window)
    OK = ttk.Button(inputbox, width=5, command=btn, state=DISABLED)
    OK.pack(side=RIGHT)
    txt = ttk.Entry(inputbox)
    txt.pack(side=LEFT, expand=True, fill=X)
    txt.bind("<Key>", lambda event: txt.after(50, text_change))
    txt.bind("<Key-Return>", btn)
    txt.focus_force()
    inputbox.pack(expand=True, fill=BOTH)
    c = Label(text="")
    c.pack(fill=X)
    f = Label(text="", font="隶书")
    f.pack(side=BOTTOM, fill=X)
    reset()

    mainloop()


运行结果及报错内容

结果说,说我的变量(second)没定义?(defined)

怎么回事?

  • 写回答

5条回答 默认 最新

  • ·星辰大海 2022-08-31 21:58
    关注

    在80行下面加一行
    second=0

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 9月19日
  • 已采纳回答 9月11日
  • 创建了问题 8月31日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效