Python格式输出

Python格式输出,python,formatting,output,Python,Formatting,Output,我有以下代码: import options import random class Player(): def __init__(self): self.name = None self.gold = 100 self.maxhealth = 100 self.health = self.maxhealth self.level = 1 self.exp = 0 self

我有以下代码:

import options
import random


class Player():
    def __init__(self):
        self.name = None
        self.gold = 100
        self.maxhealth = 100
        self.health = self.maxhealth
        self.level = 1
        self.exp = 0
        self.levelUp = 50
        self.gainedexp = self.levelUp - self.exp


    def get_name(self):
        self.name = input("Hey there, traveller! What's your name?\n~~>")
        print("Since you are new around here, 100 gold doubloons have been given to you, {}!".format(self.name))

    def gold_counter(self):
        print("You currently have {} gold!".format(player.gold))


class Dragon():
    def __init__(self):
        self.name = "Dragon"
        self.dropgold = random.randint(13,20)
        self.minexp = int(15 * round(player.level * 1.5))
        self.maxexp = int(30 * round(player.level * 1.5))  
        self.expgain = random.randint({}, {}.format(self.minexp, self.maxexp))
        self.maxhealth = 80
        self.health = self.maxhealth




def intro():
    wrong_input = 0
    nar_name = "Narrator"
    print("{}: Uhhhm...".format(nar_name))
    print("{}: Let me check my list...".format(nar_name))
    print("{0}: Ah! Yes! {1}, that's right. I heard you were supposed to be arriving today.".format(nar_name, player.name))
我还使用了另外两个模块,但我99%确信它们不会影响这一点。我得到以下输出:

Hey there, traveller! What's your name?
~~>Savage Potato
Since you are new around here, 100 gold doubloons have been given to you, Savage Potato!
Do you want to see your balance?
~~> Yes
You currently have 100 gold.
Narrator: Uhhhm...
Narrator: Let me check my list...
Narrator: Ah! Yes! None, that's right. I heard you were supposed to be arriving today.
在最后一行,它打印出讲述人的姓名,但不是用户输入的姓名。我还查看了上的python文档,但找不到修复程序。有没有办法阻止它将
None
作为用户名输出

编辑#1:我在模块后面编写了player=player()

编辑#2:这是我使用的所有代码:

模块1(main.py) 模块2(prints.py) 模块3(options.py)
如果要打印播放器的名称,需要将播放器对象作为参数传递给intro函数。假设intro没有捕获玩家对象,并且玩家对象不是全局的


目前,函数的作用域似乎没有可访问的播放器对象,这就是为什么它不输出任何播放器的原因。

如果要打印播放器的名称,需要将播放器对象作为参数传递给intro函数。假设intro没有捕获玩家对象,并且玩家对象不是全局的


目前,函数的作用域似乎没有可访问的播放器对象,这就是为什么它没有输出的原因

你能分享调用intro函数的代码吗?我想如果这个函数是在最顶端定义的,它不能像你想要的那样捕获播放器实例,所以你应该把播放器作为一个参数传入,它会解决你的问题。啊,刚刚添加了我当前使用的所有代码。我真的看不出它有什么毛病。我还尝试从main.py调用类到prints.py,方法是从main import Player(),
从main import class Player()
从main import*
import main
,但我现在所做的一切都没有问题,所以我会在以后修复它。你能分享一下调用intro函数的代码吗?我想如果这个函数是在最上面定义的,它不能像你想的那样捕获播放器实例,所以你应该把播放器作为一个参数传入,它会解决你的问题啊,只是添加了我当前使用的所有代码。我真的看不出它有什么毛病。我还尝试从main.py调用类到prints.py,方法是从main import Player(),
从main import class Player()
从main import*
import main
,但我现在所做的一切都没有问题,所以我将在以后修复它。看起来您使用的不是同一个Player实例,请尝试将其创建到intro函数中,它应该可以工作。我会尝试,我会回复您。我只是觉得把它变成一个类,然后在需要的时候调用它会更简单。在我看来,把它放在课堂上更有意义。你应该看到你的物体的可见性。如果它是全局的,它会工作,因为每个函数都可以访问它,但是如果它是本地的,例如,你将它放入一个函数或另一个类中,它不会保留更改的内存,因为你引用的是另一个对象。似乎你没有使用相同的Player实例,尝试将它创建到intro函数中,它应该会工作,我会尝试它,我会再打给你的。我只是觉得把它变成一个类,然后在需要的时候调用它会更简单。在我看来,把它放在课堂上更有意义。你应该看到你的物体的可见性。如果它是全局的,它就可以工作,因为每个函数都可以访问它,但是如果它是本地的,例如,您将它放入一个函数或另一个类中,它就不会保留更改的内存,因为您引用的是另一个对象。
import prints
import random

class Player():
    def __init__(self):
        self.name = None
        self.gold = 100
        self.maxhealth = 100
        self.health = self.maxhealth
        self.level = 1
        self.exp = 0
        self.levelUp = 50
        self.gainedexp = self.levelUp - self.exp


    def get_name(self):
        self.name = input("Hey there, traveller! What's your name?\n~~>")
        print("Since you are new around here, 100 gold doubloons have been given to you, {}!".format(self.name))




class Dragon():
    def __init__(self):
        self.name = "Dragon"
        self.dropgold = random.randint(13,20)
        self.minexp = int(15 * round(player.level * 1.5))
        self.maxexp = int(30 * round(player.level * 1.5))  
        self.expgain = random.randint({}, {}.format(self.minexp, self.maxexp))
        self.maxhealth = 80
        self.health = self.maxhealth




#while player.exp >= player.levelUp:
    #player.levelUp += 1
    #player.exp = player.exp - player.levelUp
    #player.levelUp = round(player.levelUp * 1.5)
    #print("Congrats! You just levelled up to level {} by gaining {} experience!".format(player.level, player.gainedexp))


def start():
    player.get_name()
    prints.gold_counter()
    prints.intro()
    prints.encounter()





player = Player()    


start()
import options
import random


class Player():
    def __init__(self):
        self.name = None
        self.gold = 100
        self.maxhealth = 100
        self.health = self.maxhealth
        self.level = 1
        self.exp = 0
        self.levelUp = 50
        self.gainedexp = self.levelUp - self.exp


    def get_name(self):
        self.name = input("Hey there, traveller! What's your name?\n~~>")
        print("Since you are new around here, 100 gold doubloons have been given to you, {}!".format(self.name))

    def gold_counter(self):
        print("You currently have {} gold!".format(player.gold))


class Dragon():
    def __init__(self):
        self.name = "Dragon"
        self.dropgold = random.randint(13,20)
        self.minexp = int(15 * round(player.level * 1.5))
        self.maxexp = int(30 * round(player.level * 1.5))  
        self.expgain = random.randint({}, {}.format(self.minexp, self.maxexp))
        self.maxhealth = 80
        self.health = self.maxhealth




def intro():
    wrong_input = 0
    nar_name = "Narrator"
    print("{}: Uhhhm...".format(nar_name))
    print("{}: Let me check my list...".format(nar_name))
    print("{0}: Ah! Yes! {1}, that's right. I heard you were supposed to be arriving today.".format(nar_name, player.name))
    print("{}: Welcome to... THE DRAGON FIGHTER GAME!".format(nar_name))
    print("{}: I know, it isn't the most imaginative name.".format(nar_name))
    print("{}: Don't look at me like that, I tried my hardest!".format(nar_name))
    print("{}: Anyhoo, let's carry on.".format(nar_name))
    print("{}: For some stupid reason, the creator of this game didn't give me an actual name, so\nmy name is just \"Narrator\" or \"N\", but you can call me Larry.".format(nar_name))
    while True:
        option = input("Narrator: Actually, which name would you prefer to call me?\n").upper()
        if option in options.nar_larry_opt:
            nar_name = "Larry"
        elif option in options.nar_narrator_opt:
            nar_name = "Narrator"
            while True:
                ask = input("{}: Maybe \"N\" for short?".format(nar_name)).upper()
                if ask in options.inp_yes_opt:
                    nar_name = "N"
                elif ask in options.inp_no_opt:
                    break
                else:
                    wrong_input += 1
                    if wrong_input == 1:  
                        print("Please try again.")
                    elif wrong_input == 2:
                        print("Try to not put the same thing in next time.")
                    elif wrong_input == 3:
                        print("This isn't funny.")
                    elif wrong_input == 4:
                        print("Seriously.")
                    elif wrong_input == 5:
                        print("OKAY! THIS IS IT! GO BACK TO THE BEGINNING!")
                        intro()

                    continue
                break
        else:
            print("Please try again.")
            continue
        break
    print("{}: So, as I was saying, this game is basically just some dragon quest thingy.".format(nar_name))
    print("{}: You'll probably get tips from me every now and again if I can be bothered.".format(nar_name))
    print("{}: I'll get an test encounter ready.".format(nar_name))



def gold_counter():
    while True:
        option = input("Do you want to see your balance?\n~~> ").upper()
        if option in options.inp_yes_opt:
            print("You currently have {} gold.".format(player.gold))
        elif option in options.inp_no_opt:
            print("You can check your balance later in the game.")
        else:
            print("Please try again.")
            continue
        break



def encounter():
    while True:
        dragon_appear = random.randint(1,2)
        if dragon_appear == 1:
            print("What's that? Looks like a huge bir... \nA DRAGON! A MAJESTIC DRAGON JUST FLEW DOWN FROM THE SKY!")
        else:
            print("What's that? Looks like a huge bir... \n Yeah. Just a giganta-bird.")

    while encounter().dragon_appear != 2:
        print("So that's the message you'll get when a dragon appears.")
        print("And you will be prompted whether you want to run or fight, like so:")
        while True:
            wrong_input = 0
            ask = input("Run away like a coward, or fight the majestic beast?")
            if ask in options.enc_run_opt:
                escape = random.randint(1,2)
                if escape == 1:
                    print("You managed to get away!")
                else:
                    print("You didn't get away. Better luck next time!")
            elif ask in options.enc_attack_opt:
                pass
            else:
                wrong_input += 1
                if wrong_input == 1:  
                    print("Please try again.")
                elif wrong_input == 2:
                    print("Try to not put the same thing in next time.")
                elif wrong_input == 3:
                    print("This isn't funny.")
                elif wrong_input == 4:
                    print("Seriously.")
                continue
            break




player = Player() 
inp_yes_opt = {"Y", "YE", "YES", "YEAH", "PLEASE", "YES PLEASE"}
inp_no_opt = {"N", "NO", "NOPE", "NAH"}

nar_larry_opt = {"LARRY", "LARR", "LAR", "LA", "L", "LARRY PLEASE"}
nar_narrator_opt = {"NARRATOR", "NARR", "N", "NAR", "NARRATE", "NOT LARRY"}

enc_run_opt = {"RUN", "RU", "R", "SCRAM", "RUN AWAY", "RUUUUN"}
enc_attack_opt = {"ATTACK", "ATTAK", "A", "FIGHT", "F", "ATTACK", ""}