Python打印函数在类中无法工作

2024-09-27 21:26:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个骰子游戏,你打印出一张骰子脸(我是初学者) 必须有2节课。一个叫做骰子游戏的类。它有一个名为play的方法,它显示模具表面。还有一个类叫做Die。它有一个名为face的属性,用于保存人脸图像。有一种称为roll的方法,可以随机设置面

import random

class Die(object):

    def __init__ (self, face =None, faceValue = None):
        self.face = face
        self.faceValue = faceValue
    def roll(self):
        for c in range(1,2):
            random.randint(1,2)
            if random == '1':
                self.face = (' ------\n|      |\n|   o  |\n|      |\n ------')
def __str__(self):
        return str(self.face)
class DiceGame(Die):
    def play(self):
        print(self.face)
go = DiceGame(Die)
print(go.play)

输出为

bound method DiceGame.play of <__main__.DiceGame object at 0x7fd060db0358>> 

它应该打印模具表面(我是个新手。不知道为什么我的代码是这样格式化的。)


Tags: 方法self游戏playdefrandom骰子表面
2条回答

您的代码有几个问题:

  1. 在第go = DiceGame(Die)行上,类Die将作为面发送到构造函数中。试试go = DiceGame()

  2. 不能在第print(go.play)行上调用play方法。试试go.play()

  3. random.randint(1,2)返回整数对象。与“1”进行比较总是会导致False

  4. 在您的代码中,实际上并没有滚动

固定代码:

import random
class Die(object):
    def __init__(self, face=None, faceValue=None):
        self.face = face
        self.faceValue = faceValue

    def roll(self):
        self.faceValue = random.randint(1, 6)
        if self.faceValue == 1:
            self.face = (
                '    \n'
                '|      |\n'
                '|   o  |\n'
                '|      |\n'
                '    ')
        elif self.faceValue == 2:
            self.face = (
                '    \n'
                '| o    |\n'
                '|      |\n'
                '|    o |\n'
                '    ')
        elif self.faceValue == 3:
            self.face = (
                '    \n'
                '| o    |\n'
                '|   o  |\n'
                '|     o|\n'
                '    ')
        elif self.faceValue == 4:
            self.face = (
                '    \n'
                '| o   o|\n'
                '|      |\n'
                '| o   o|\n'
                '    ')
        elif self.faceValue == 5:
            self.face = (
                '    \n'
                '| o   o|\n'
                '|   o  |\n'
                '| o   o|\n'
                '    ')
        elif self.faceValue == 6:
            self.face = (
                '    \n'
                '| o   o|\n'
                '| o   o|\n'
                '| o   o|\n'
                '    ')

    def __str__(self):
        return str(self.face)


class DiceGame(Die):
    def play(self):
        self.roll()
        print(self.face)


go = DiceGame()
go.play()

另一种滚动方法可以是:

    def roll(self):
        self.face_value = random.randint(1, 6)
        self.face = u"⚀⚁⚂⚃⚄⚅"[self.face_value-1]

但是您可能需要添加# -*- coding: utf-8 -*-作为代码的第一行来表示编码

我同意Jan的观点,不过我会将DiceGame类中的方法play更改为返回self.face,而不仅仅是打印它。相反,我会print(go.play())

import random

class Die(object):

    def __init__ (self, face =None, faceValue = None):
        self.face = face
        self.faceValue = faceValue
    def roll(self):
            self.faceValue = random.randint(1, 6)
            if self.faceValue == 1:
                self.face = (
                    '    \n'
                    '|      |\n'
                    '|   o  |\n'
                    '|      |\n'
                    '    ')
            elif self.faceValue == 2:
                self.face = (
                    '    \n'
                    '| o    |\n'
                    '|      |\n'
                    '|    o |\n'
                    '    ')
            elif self.faceValue == 3:
                self.face = (
                    '    \n'
                    '| o    |\n'
                    '|   o  |\n'
                    '|     o|\n'
                    '    ')
            elif self.faceValue == 4:
                self.face = (
                    '    \n'
                    '| o   o|\n'
                    '|      |\n'
                    '| o   o|\n'
                    '    ')
            elif self.faceValue == 5:
                self.face = (
                    '    \n'
                    '| o   o|\n'
                    '|   o  |\n'
                    '| o   o|\n'
                    '    ')
            elif self.faceValue == 6:
                self.face = (
                    '    \n'
                    '| o   o|\n'
                    '| o   o|\n'
                    '| o   o|\n'
                    '    ')
    def __str__(self):
            return str(self.face)
class DiceGame(Die):
    def play(self):
        self.roll()
        return self.face

go = DiceGame()
print(go.play())

相关问题 更多 >

    热门问题