【问题标题】:I want to print on the same line but something isn't working我想在同一行打印,但有些东西不起作用
【发布时间】:2020-01-02 22:20:46
【问题描述】:

这是我正在尝试制作的一个简单的二十一点游戏的摘录。

handpc= ['5H']

def carddisplaypc(cardview):
    print ('''
---------
|%s     |
|       |
|     %s|
---------
''' %  (cardview[0],cardview[0]),end='')

carddisplaypc(handpc)
carddisplaypc(handpc)

问题是我希望“卡片”并排显示,但我无法这样做,也找不到任何对我的特定问题有用的东西。

提前感谢您的任何解释。

【问题讨论】:

    标签: python-3.x function printing


    【解决方案1】:

    我相信你想要这样的东西。我使用了一个模板,您可以将其格式化为任何字母。问题是您必须将其拆分成行,然后将它们连接在一起。

    def card(content):
        template = f'''
    ---------
    | {content}     |
    |       |
    |     {content} |
    ---------
        '''
        return template
    
    cards = [card(1), card('H')]
    cards = [card.split('\n') for card in cards]
    
    collector = ''
    
    for card in zip(*cards):
        collector += ' '.join(card) + '\n'
    
    print(collector)
    

    结果:

    --------- ---------
    | 1     | | H     |
    |       | |       |
    |     1 | |     H |
    --------- ---------
    

    【讨论】:

    • 感谢您的回答,我想我理解您的所作所为,但是像这样,我认为如果不相应地重写所有内容,我就无法打印和更新手稿,对吧?
    • 抱歉,我不太明白您在问什么。您是否担心它的功能不如您在示例中所做的那样?你是对的,我更新了答案,所以它是一个函数。为此,我更喜欢使用 f-strings 作为变量重复并且在函数中是局部的。
    • @TESoblivionIV 请记住,您可以使用特殊字符为卡片制作适当的框架;)en.wikipedia.org/wiki/Box-drawing_character
    • 是的,因为我正在考虑运行一个 for 循环来打印行上的每张卡片,请检查 tje 特殊字符,谢谢
    【解决方案2】:

    您必须像使用第一张牌一样绘制它:

    handpc= ['5H']
    
    def carddisplaypc(cardview):
        print ('''
    ---------     ---------
    |%s     |     |%s     |
    |       |     |       |
    |     %s|     |     %s|
    ---------     ---------
    ''' % (cardview[0],cardview[0],cardview[0],cardview[0]),end='')
    
    carddisplaypc(handpc)
    

    输出

    ---------     ---------
    |5H     |     |5H     |
    |       |     |       |
    |     5H|     |     5H|
    ---------     ---------
    

    请注意cardview 指针的顺序。我相信它将是前两个字符串,然后是底部两个字符串。请参见下面的示例。

    handpc= ['5H', 'KC']
    
    def carddisplaypc(cardview):
        print ('''
    ---------     ---------
    |%s     |     |%s     |
    |       |     |       |
    |     %s|     |     %s|
    ---------     ---------
    ''' % (cardview[0],cardview[1],cardview[0],cardview[1]),end='')
    
    carddisplaypc(handpc)
    

    输出 v2

    ---------     ---------
    |5H     |     |KC     |
    |       |     |       |
    |     5H|     |     KC|
    ---------     ---------
    

    https://ideone.com/TjAG7S

    用条件语句更新:

    handpc= ['5h', 'Kc', 'Ad']
    handsize = 3
    def carddisplaypc(cardview, handsize_current):
        if handsize_current == 0:
            pass
        elif handsize_current == 1:
            print ('''
        --------- 
        |%s     | 
        |       | 
        |     %s| 
        --------- 
        ''' % (cardview[0],cardview[0]),end='')
        elif handsize_current == 2:
            print ('''
        ---------     ---------
        |%s     |     |%s     |
        |       |     |       |
        |     %s|     |     %s|
        ---------     ---------
        ''' % (cardview[0],cardview[1],cardview[0],cardview[1]),end='')
        elif handsize_current == 3:
            print ('''
        ---------     ---------     ---------   
        |%s     |     |%s     |     |%s     |
        |       |     |       |     |       |
        |     %s|     |     %s|     |     %s|
        ---------     ---------     ---------
        ''' % (cardview[0],cardview[1],cardview[2],cardview[0], cardview[1],cardview[2]),end='')
    
    carddisplaypc(handpc, handsize)
    

    输出 v3

        ---------     ---------     ---------   
        |5h     |     |Kc     |     |Ad     |
        |       |     |       |     |       |
        |     5h|     |     Kc|     |     Ad|
        ---------     ---------     ---------
    

    https://ideone.com/4eTCd6

    【讨论】:

    • 很遗憾,我认为我可以将它存储在一个函数中,然后重复它,以便它随着手的大小而更新,无论如何,谢谢
    • 您可以使用手牌大小作为输入做出条件语句,然后抽出相应数量的牌。
    • 我用我所指的内容更新了上面的代码。希望它对你有用。
    • 是的,这将是我的第二个选择,我在做刽子手的时候也是这样做的,非常感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 2016-06-29
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    相关资源
    最近更新 更多