为什么我的 Python 代码在 if 运算符中跳过 while 循环?

问题描述 投票:0回答:1

代码在 if choise == 1; 中没有看到“while”; elif 选择 == 2;埃利夫选择== 3。 我是Python新手,也许我不明白一些东西,提前感谢愿意提供帮助的人。 也许是关于“while”中的“or”,但我不完全确定。 请帮忙 代码:

import random
from os import *



def game(): #функция игры
    
    
    def antaganist():
        herol = 0
        antl = 0
        firstant = {
            "fraHealf": random.randrange(random.randrange((hero["Healf"] - level) // 3, (hero["Healf"] + level) // 2), hero["Healf"] - 1),
            "fraDamage": random.randrange(random.randrange((hero["Damage"] - level) // 3, (hero["Damage"] + level) // 2), hero["Damage"] - 1),
            "frabrone": random.randrange(random.randrange((hero["brone"] - level) // 3, (hero["brone"] + level) // 2), hero["brone"] - 1)
        }
        secondant = {
            "scaHealf": random.randrange(random.randrange((hero["Healf"] - level) // 3, (hero["Healf"] + level) // 2), hero["Healf"] - 1),
            "scaDamage": random.randrange(random.randrange((hero["Damage"] - level) // 3, (hero["Damage"] + level) // 2), hero["Damage"] - 1),
            "scabrone": random.randrange(random.randrange((hero["brone"] - level) // 3, (hero["brone"] + level) // 2), hero["brone"] - 1)

        }
        thirdant = {
            "thaHealf": random.randrange(random.randrange((hero["Healf"] - level) // 3, (hero["Healf"] + level) // 2), hero["Healf"] - 1),
            "thirDamage": random.randrange(random.randrange((hero["Damage"] - level) // 3, (hero["Damage"] + level) // 2), hero["Damage"] - 1),
            "thirbrone": random.randrange(random.randrange((hero["brone"] - level) // 3, (hero["brone"] + level) // 2), hero["brone"] - 1)

        }
        print(f"Выберите противника: \n 1) Урон: {firstant['fraDamage']}, Здоровье: {firstant['fraHealf']}, Броня: {firstant['frabrone']} \n 2) Урон: {secondant['scaDamage']}, Здоровье: {secondant['scaHealf']}, Броня: {secondant['scabrone']} \n 3) Урон: {thirdant['thirDamage']}, Здоровье: {thirdant['thaHealf']}, Броня: {thirdant['thirbrone']}")
        choise = int(input("Выберите противника(1, 2, 3): "))
        if choise == 1:
            herod = 0
            antd = 0
            heroh = hero["Healf"] + hero["brone"]
            anth = firstant["fraHealf"] + firstant["frabrone"]
            while heroh <= 0 or anth <= 0:

                print("                                       ")
                q = random.randint(hero, firstant)
                if q == hero:
                    p = f"врага остается {(firstant['fraHealf'] + firstant['frabrone']) - hero['Damage']}"
                    herod += hero["Damage"]
                    anth -= hero["Damage"]
                elif q == firstant:
                    p = f"героя остается {(hero['Healf'] + hero['brone']) - firstant['fraDamage']}"
                    antd += firstant["fraDamage"]
                    heroh -= firstant["fraDamage"]
                print(f"{q} наносит удар \n у {p} здоровья")
            if anth == 0:
                print("Ты победил!")
                print(f"Урон героя за игру: {herod}. Урон врага за игру: {antd}")
                level + 1
                hero["brone"] + 3
                hero["Damage"] + 5
                hero["Healf"] + 6
                def gr():
                    k = input("Желаете еще сразиться? (yes or no): ")
                    if k == "yes":
                        antaganist()
                    elif k == "no":
                        print("Игра окончена")
                        play()
                    else:
                        print("Error")
                        gr()
                gr()
            else:
                print("Вы проиграли!")
                print(f"Урон героя за игру: {herod}. Урон врага за игру: {antd}")
                play()

        elif choise == 2:
            herod = 0
            antd = 0
            heroh = hero["Healf"] + hero["brone"]
            anth = secondant["scaHealf"] + secondant["scabrone"]
            while heroh <= 0 or anth <= 0:
                print("                                       ")
                q = random.randint(hero, secondant)
                if q == hero:
                    p = f"врага остается {(secondant['scabrone'] + secondant['scaHealf']) - hero['Damage']}"
                    herod += hero["Damage"]
                    anth -= hero["Damage"]
                elif q == secondant:
                    p = f"героя остается {(hero['Healf'] + hero['brone']) - secondant["scaDamage"]}"
                    antd += secondant["scaDamage"]
                    heroh -= secondant["scaDamage"]
                print(f"{q} наносит удар \n у {p} здоровья")
            if anth == 0:
                print("Ты победил!")
                print(f"Урон героя за игру: {herod}. Урон врага за игру: {antd}")
                level + 1
                hero["brone"] + 3
                hero["Damage"] + 5
                hero["Healf"] + 6
                def gr():
                    k = input("Желаете еще сразиться? (yes or no): ")
                    if k == "yes":
                        antaganist()
                    elif k == "no":
                        print("Игра окончена")
                        play()
                    else:
                        print("Error")
                        gr()
                gr()
            else:
                print("Вы проиграли!")
                print(f"Урон героя за игру: {herod}. Урон врага за игру: {antd}")
                play()

        elif choise == 3:
            herod = 0
            antd = 0
            heroh = hero["Healf"] + hero["brone"]
            anth = thirdant["thaHealf"] + thirdant["thirbrone"]
            while heroh <= 0 or anth <= 0:
                print("a")
                q = random.randint(hero, thirdant)
                if q == hero:
                    p = f"врага остается {(thirdant['thaHealf'] + thirdant['thirbrone']) - hero['Damage']}"
                    herod += hero["Damage"]
                    anth -= hero["Damage"]
                elif q == thirdant:
                    p = f"героя остается {(hero['Healf'] + hero['brone']) - thirdant['thirDamage']}"
                    antd += thirdant["thirDamage"]
                    heroh -= thirdant["thirDamage"]
                print(f"{q} наносит удар \n у {p} здоровья")
            if anth == 0:
                print("Ты победил!")
                print(f"Урон героя за игру: {herod}. Урон врага за игру: {antd}")
                level + 1
                hero["brone"] + 3
                hero["Damage"] + 5
                hero["Healf"] + 6
                def gr():
                    k = input("Желаете еще сразиться? (yes or no): ")
                    if k == "yes":
                        antaganist()
                    elif k == "no":
                        print("Игра окончена")
                        play()
                    else:
                        print("Error")
                        gr()
                gr()
            else:
                print("Вы проиграли!")
                print(f"Урон героя за игру: {herod}. Урон врага за игру: {antd}")
                play()
        else:
            print("Error")
            antaganist()
        
    level = 1
    name = input("Задайте имя герою: ")
    hero = {
        "Damage": random.randrange(7, 10)+level,
        "Healf": random.randrange(10, 20)+level,
        "brone": random.randrange(6, 10)+level
    }

    print(f" Имя героя: {name} \n Начальный урон героя: {hero['Damage']} \n Начальное хп героя: {hero["Healf"]}хп \n Начальная броня героя: {hero["brone"]} \n Ваш герой готов покорять этот свет!")
    antaganist()

difficult = ["Сложный", "Легкий", "Средний"]  #Сложность
type_of_class = ["Дальний", "Ближний"]  #тип врага
def play1():
    start = input("Вы желаете начать? (yes or no): ")
    if start == "yes":
        game()
    elif start == "no":
        play()
    else:
        print("Error")
    #функция для начала игры
def play():
    start = input("Вы желаете начать? (yes or no): ")
    if start == "yes":
        game()
    elif start == "no":
        play1()
    else:
        print("Error")
    #функция для бесконечного yes or no
play()

P.s 这是一款主机游戏,只要修改代码就可以玩

python while-loop
1个回答
0
投票

您只是有一些语法错误

您需要将“”更改为仅“ ”

我附上了一张照片

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.