Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 30.05.2017
Сообщений: 8

NameError: name 'user_score' is not defined

19.11.2020, 21:18. Показов 1623. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
import easygui
from tkinter import *
from tkinter import messagebox
from random import *
from time import *
 
def rock_paper_scissors():
 
 
    pc_score = 0
    user_score = 0
    pc_figur = ""
    user_figur = ""
 
    def stone():
        global user_figur
        Kbut["bg"] = "green"
        Nbut["bg"] = "white"
        Bbut["bg"] = "white"
        user_figur = "камень"
        PCbut["state"] = "normal"
 
    def scissors():
        global user_figur
        Kbut["bg"] = "white"
        Nbut["bg"] = "green"
        Bbut["bg"] = "white"
        user_figur = "ножницы"
        PCbut["state"] = "normal"
 
    def paper():
        global user_figur
        Kbut["bg"] = "white"
        Nbut["bg"] = "white"
        Bbut["bg"] = "green"
        user_figur = "бумага"
        PCbut["state"] = "normal"
 
    def go():
        global pc_figur, user_figur, user_score, pc_score
        t4["text"] = "выбор pc - "
        for i in range(30):
            ran = randint(1, 4)
            if ran == 1:
                pc_figur = "камень"
            if ran == 2:
                pc_figur = "ножницы"
            if ran == 3:
                pc_figur = "бумага"
 
            t4["text"] = "выбор pc - " + pc_figur
            t4.update()
            sleep(0.1)
 
        if pc_figur == user_figur:
            messagebox.showinfo("resylt", "Drow")
 
        else:
 
            if pc_figur == "камень" and user_figur == "ножницы":
                pc_score += 1
                messagebox.showinfo("result", "PC Победил")
            if pc_figur == "камень" and user_figur == "бумага":
                user_score += 1
                messagebox.showinfo("result", "user Победил")
 
            if pc_figur == "ножницы" and user_figur == "бумага":
                pc_score += 1
                messagebox.showinfo("result", "PC Победил")
            if pc_figur == "ножницы" and user_figur == "камень":
                user_score += 1
                messagebox.showinfo("result", "user Победил")
 
            if pc_figur == "бумага" and user_figur == "камень":
                pc_score += 1
                messagebox.showinfo("result", "PC Победил")
            if pc_figur == "бумага" and user_figur == "ножницы":
                user_score += 1
                messagebox.showinfo("result", "user Победил")
 
            t5["text"] = "Игрок - " + str(user_score)
            t6["text"] = "PC - " + str(pc_score)
 
        PCbut["state"] = "disabled"
 
    root = Tk()
    root.title('Камень, ножницы, бумага')
    root.resizable(width=False, height=False)
    t1 = Label(root, text="Камень, ножницы, бумага", fg="red")
    t1.grid(row=0, column=1)
    t2 = Label(root, text="Выбор игрока", fg="green")
    t2.grid(row=1, column=1)
 
    Kbut = Button(root, text="Камень", command=stone)
    Kbut.grid(row=2, column=0)
    Nbut = Button(root, text="Ножницы", command=scissors)
    Nbut.grid(row=2, column=1)
    Bbut = Button(root, text="Бумага", command=paper)
    Bbut.grid(row=2, column=2)
 
    t3 = Label(root, text="Выбор Компьютера", fg="blue")
    t3.grid(row=3, column=1)
    PCbut = Button(root, text="Сгенерировать", command=go)
    PCbut["state"] = "disabled"
    PCbut.grid(row=4, column=1)
 
    t4 = Label(root, text="выбор pc - 0", fg="red")
    t4.grid(row=5, column=1)
 
    t5 = Label(root, text="Игрок - 0", fg="green")
    t5.grid(row=6, column=0)
 
    t6 = Label(root, text="PC - 0", fg="blue")
    t6.grid(row=6, column=2)
    root.mainloop()
 
 
def guess_the_number():
    class Application(Frame):
 
        def __init__(self, master):
 
            super(Application, self).__init__(master)
            self.grid()
            self.create_widgets()
 
        def create_widgets(self):
 
            Label(self,
                  text="Угадай число"
                  ).grid(row=0, column=0, columnspan=2, sticky=W)
 
            # create a label and asking number, also entry for that number
            Label(self,
                  text="Введи число"
                  ).grid(row=1, column=0, sticky=W)
 
            self.number_ent = Entry(self)
            self.number_ent.grid(row=1, column=1, sticky=W)
 
            # create a submit button
            Button(self,
                   text="Сравни число",
                   command=self.guess
                   ).grid(row=2, column=0, sticky=W)
 
            self.answer = Text(self, width=75, height=10, wrap=WORD)
            self.answer.grid(row=3, column=0, columnspan=4)
 
        def guess(self):
            # set the initial values
 
            guess_num = self.number_ent.get()
 
            if int(guess_num) > the_number:
                xxx = "Меньше..."
            elif int(guess_num) < the_number:
                xxx = "Больше..."
            elif int(guess_num) == the_number:
                xxx = "Угадал!"
 
            self.answer.delete(0.0, END)
            self.answer.insert(0.0, xxx)
 
    the_number = random.randint(1, 100)
    root = Tk()
    root.title("Угадай мое число")
    app = Application(root)
    root.mainloop()
 
 
games = [
    'Камень, ножницы, бумага',
    'Угадай число'
]
 
games_entry_points = [
    rock_paper_scissors,
    guess_the_number
]
 
while True:
    res = easygui.buttonbox('Выбери игру!', choices=games)
    if res is None:
        break
    games_entry_points[games.index(res)]()
Пытаюсь реализовать внутри программы две игры с примитивным интерфейсом, при запуске игры Камень, ножницы, бумага, игра запускается, но счётчик побед USER и PC не работает, а ничья выводится. Сам пайтон пишет, что
>NameError: name 'user_score' is not defined
И вторая проблема вообще не работает вложенная программа угадай число, хотя как отдельный файл работает замечательно, где мои ошибки? Очень надеюсь на скорейшее решение.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.11.2020, 21:18
Ответы с готовыми решениями:

NameError: name 'name' is not defined
ошибка, как исправить. программа должна создавать всплывающую подсказку для кнопки line 12, in &lt;module&gt; if name ==...

NameError: name 'x' is not defined
import pygame import random from os import path img_dir = path.join(path.dirname(__file__), 'img') WIDTH = 800 HEIGHT = 600...

NameError: name 'K55' is not defined
Добрый вечер! Имеется кусок кода(В данном случае ИНВЕРСИЯ выбирается как элемент из списка) if ust==&quot;Инверсия&quot;: ...

2
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
19.11.2020, 22:17
Лучший ответ Сообщение было отмечено Arkelogen как решение

Решение

Цитата Сообщение от Arkelogen Посмотреть сообщение
Пытаюсь реализовать внутри программы две игры с примитивным интерфейсом, при запуске игры Камень, ножницы, бумага, игра запускается, но счётчик побед USER и PC не работает, а ничья выводится. Сам пайтон пишет, что
>NameError: name 'user_score' is not defined
Везде global замените на nonlocal

Добавлено через 3 минуты
Цитата Сообщение от Arkelogen Посмотреть сообщение
И вторая проблема вообще не работает вложенная программа угадай число, хотя как отдельный файл работает замечательно
165 строка
Python
1
    the_number = random.randint(1, 100)
замените на
Python
1
    the_number = randint(1, 100)
Добавлено через 5 минут
Совет на будущее, никогда не импортируйте так:
Python
1
2
3
4
from tkinter import *
from tkinter import messagebox
from random import *
from time import *
Вместо звёздочек импортируйте только то, что вам нужно.
Цитата Сообщение от Arkelogen Посмотреть сообщение
где мои ошибки?
Если честно, то весь код - это одна большая ошибка (класс объявляется в функции, куча повторяющихся строк и т.д.) Учитесь постепенно, не надо сразу пытаться писать таких "Франкенштейнов". Освойте основы языка, ООП и только потом переходите к GUI и библиотекам.

Добавлено через 8 минут
И судя по коду, на 43 строке вам нужно это
Python
1
            ran = randint(1, 4)
заменить на это
Python
1
            ran = randint(1, 3)
или на это
Python
1
            ran = randrange(1, 4)
в функции randint, в отличии от функции randrange правая граница тоже входит в диапазон, так что у вас там могла получиться четвёрка.
1
0 / 0 / 0
Регистрация: 30.05.2017
Сообщений: 8
19.11.2020, 22:42  [ТС]
Спасибо вам большое, понимаю ваши замечания по поводу моего кода, просто есть такая ситуация, что нужно было сделать это в жатые сроки с минимальным знанием языка. Ещё раз спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.11.2020, 22:42
Помогаю со студенческими работами здесь

NameError: name 'ImageDraw' is not defined
Люди, кто может подсказать почему появляется ошибка: class GlassesImageDraw(ImageDraw.ImageDraw): NameError: name 'ImageDraw' is not...

NameError: name 'txt' is not defined
Здравствуйте, в Python'е я новичок, и не понимаю что с данным куском кода не так: def clicked(): ...

Ошибка в коде NameError: name 'b2' is not defined
Помогите с ошибкой в коде NameError: name 'b2' is not defined код: from tkinter import * def zachem(): ...

Python NameError: name 'QtGui' is not defined
Подскажите, пожалуйста, что делать постоянно выдает ошибку: NameError: name 'QtGui' is not defined Вот код: import sys from...

NameError: name 'с' is not defined
what = input( &quot;Что делаем? (+,-): &quot; ) a = input(&quot;Введи первое число: &quot;) b = input(&quot;Введи второе число: &quot;) if what ==...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru