gpt4 book ai didi

python - Python中的双骰子图形

转载 作者:太空狗 更新时间:2023-10-29 20:35:39 26 4
gpt4 key购买 nike

我是编程新手,在我的项目中,我正在尝试打印基本的骰子图形。

我正在尝试制作一个函数,它接受从 1 到 6 的两个数字,并打印相应的两个相邻的骰子面。我尝试了几种方法,但这是唯一有效的方法,而且它很笨拙:

s="+ - - - - +   + - - - - +"
m1="| o o |"
m2="| o |"
m3="| o |"
m4="| o |"
m5="| |"

def dice(a,b):
if a == 1:
str1=m5
str2=m3
str3=m5
elif a == 2:
str1=m2
str2=m5
str3=m4
elif a == 3:
str1=m2
str2=m3
str3=m4
elif a == 4:
str1=m1
str2=m5
str3=m1
elif a == 5:
str1=m1
str2=m3
str3=m1
elif a == 6:
str1=m1
str2=m1
str3=m1
if b == 1:
str1=str1+" "+m5
str2=str2+" "+m3
str3=str3+" "+m5
elif b == 2:
str1=str1+" "+m2
str2=str2+" "+m5
str3=str3+" "+m4
elif b == 3:
str1=str1+" "+m2
str2=str2+" "+m3
str3=str3+" "+m4
elif b == 4:
str1=str1+" "+m1
str2=str2+" "+m5
str3=str3+" "+m1
elif b == 5:
str1=str1+" "+m1
str2=str2+" "+m3
str3=str3+" "+m1
elif b == 6:
str1=str1+" "+m1
str2=str2+" "+m1
str3=str3+" "+m1
print(s)
print(str1)
print(str2)
print(str3)
print(s)

有没有更简洁优雅的方式来做到这一点?

最佳答案

你的尝试已经展示了一些好的部分:找到共同的部分,并将它们存储在单独的变量中。

但我们可以通过实现生成一个 骰子的单个 函数来做得更好。例如:

s ="+ - - - - +"
m1="| o o |"
m2="| o |"
m3="| o |"
m4="| o |"
m5="| |"

dice = [
[m5, m3, m5],
[m2, m5, m4],
[m2, m3, m4],
[m1, m5, m1],
[m1, m3, m1],
[m1, m1, m1]
]

所以现在我们可以为一个 die 创建一个函数:

def die(i):
return [s, *dice[i-1], s]

对于范围内的给定 i,这将返回包含三个字符串的列表。

然后我们可以创建将这些行连接的函数,例如:

def join_row(*rows):
return [' '.join(r) for r in zip(*rows)]

现在对于两个骰子,我们可以定义如下函数:

def twodice(a, b):
for line in join_row(die(a), die(b)):
print(line)

好消息是我们可以将此概括为任意数量的骰子,例如:

def ndice(*ns):
for line in join_row(*map(die, ns)):
print(line)

例如:

>>> ndice(3, 2, 5, 1)
+ - - - - + + - - - - + + - - - - + + - - - - +
| o | | o | | o o | | |
| o | | | | o | | o |
| o | | o | | o o | | |
+ - - - - + + - - - - + + - - - - + + - - - - +
>>> ndice(1)
+ - - - - +
| |
| o |
| |
+ - - - - +
>>> ndice(1, 4)
+ - - - - + + - - - - +
| | | o o |
| o | | |
| | | o o |
+ - - - - + + - - - - +
>>> ndice(1, 4, 2)
+ - - - - + + - - - - + + - - - - +
| | | o o | | o |
| o | | | | |
| | | o o | | o |
+ - - - - + + - - - - + + - - - - +
>>> ndice(1, 4, 2, 5)
+ - - - - + + - - - - + + - - - - + + - - - - +
| | | o o | | o | | o o |
| o | | | | | | o |
| | | o o | | o | | o o |
+ - - - - + + - - - - + + - - - - + + - - - - +

这种方法的一个好处是,您可以获得很多实用函数,您可以重用这些函数来解决类似的问题。此外,每个函数都做一些简单的事情,因此其中一个函数出现大问题的可能性相当“低”。如果出现问题,通常很容易解决。

关于python - Python中的双骰子图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52672240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com