Не работает код на Python
import os
import random
class game:
def ask():
while True:
global ask
print('Камень Ножницы Бумага')
print('[1] Камень')
print('[2] Ножницы')
print('[3] Бумага')
ask = str(input('>> '))
def ai():
list = ['1', '2', '3']
random.random(list)
def logic():
if random == '1' and ask == '1':
def xx()
if random == '1' and ask == '2':
def lose()
if random == '1' and ask == '3':
def winner()
if random == '2' and ask == '1':
def winner()
if random == '2' and ask == '2':
def xx()
if random == '2' and ask == '3':
def lose()
if random == '3' and ask == '1':
def lose()
if random == '3' and ask == '2':
def winner()
if random == '3' and ask == '3':
def xx()
def winner():
print('Ты выиграл!!!!')
print(\n)
print('Повторим?')
print('[1] Да')
print('[2] Нет')
ask = str(input('>> '))
if ask == '1':
def ask()
if ask == '2':
os.exit()
def lose():
print('Ты проиграл :(')
print(\n)
print('Повторим?')
print('[1] Да')
print('[2] Нет')
ask = str(input('>> '))
if ask == '1':
def ask()
if ask == '2':
os.exit()
def xx():
print('Ничья -_-')
print('Переигрываем...')
def logic()
game.ask()
ошибка:
Traceback (most recent call last):
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in <module>
start(fakepyfile,mainpyfile)
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start
exec(open(mainpyfile).read(), main.__dict__)
File "<string>", line 18
def xx()
^
SyntaxError: invalid syntax
Ответы (2 шт):
import sys
import random
while True:
print('Камень Ножницы Бумага\n', '[0] Выход\n', '[1] Камень\n', '[2] Ножницы\n', '[3] Бумага\n')
ask = int(input('Ответ: '))
rand = random.randint(1, 3)
if ask == 0:
sys.exit()
elif rand == ask:
print('Ничья -_-', 'Переигрываем...\n')
elif (rand, ask) in [(1, 3), (2, 1), (3, 2)]:
print('Ты выиграл!!!!\n')
elif (rand, ask) in [(1, 2), (2, 3), (3, 1)]:
print('Ты проиграл :(\n')
else:
print('Ответ должен быть от 1 до 3\n')
Во-первых, не нужно использовать класс:
- Удалите из начала вашей программы строку
class game:, - удалите отступы связанные с этим определением в последовательных строках,
- в последней строке вместо
game.ask()используйте толькоask().
Главная ошибка, что вы путаете
- определение функции (например
def lose():) - с ее применением (вызовом, напр.
lose(), т.е. без ключевого словаdefв начале и без двоеточия в конце).
Функция определяется (обычно) только один раз и в Питоне нужно ее определить перед ее первым вызовом (применением).
Значит:
все 3 определения функций в конце программы переместите в начало,
дальше эти функции уже только вызывайте, т.е. в виде
winner(),lose()иxx()(безdefи двоеточия).тоже другие функции (определенные в начале программы) вызывайте без
defи двоеточия.
Дальше:
Имя
askвы используете как имя функции, так и как имя переменной для хранения пользователем введенной строки. Ожидайте последствие в виде чудесных ошибок, или примените разные имена.То же самое для имени
random-import randomв начале программы определяетrandomкак имя модуля, и вы, наверно, хотели (но не сделали, см. пункт 4 ниже) использовать его для хранения случайного числа.Не надо применить функцию
str()в командахask = str(input('>> ')), т.к. функцияinput()всегда возвращает строку (т.е. типstr). Достаточноask = input('>> ').Функцию
ai()вы определили, но никогда не применили. Вы, наверно, хотели применить ее после того, что пользователь выбрал 1, 2 или 3.