刚开始使用任何类型的编程,python是我上课的语言。
我的老师玩了一个叫做二进制骰子的游戏,它只有4个骰子(代表一个半字节),每个骰子有3个边(0)和3个边(1),你应该安排骰子让你得到最高可能值,然后将该值转换为十六进制数字。
我正在尝试将其写入py程序,因此它生成4个二进制数字,用户对它们进行排序,检查它,然后让用户输入十六进制值,检查它自己的二进制到十六进制的转换,使用连接的半字节作为一个4位数值。
继续我到目前为止所得到的...(再次,只编程了几个星期)
#Binary Dice Program
#individual integers generated randomly
print ("This Game Simulates Binary Dice,")
print ("Your objective is to sort the 4 given")
print ("binary numbers so they make the highest")
print ("possible hexadecimal value...")
auth = input("When you are ready, hit Enter to continue...")
print (" ")
#generation and display of given ints
import random
die0 = random.randint (0, 1)
die1 = random.randint (0, 1)
die2 = random.randint (0, 1)
die3 = random.randint (0, 1)
dieArray=[die0, die1, die2, die3]
print ("Your die are showing as ")
print (dieArray)
#sort array from highest to lowest
def get_data():
return dieArray
nib=get_data()
nib.sort(reverse=True)
for num in nib:
print .join((str(num))) #I think Im doing this completely wrong
#Once we get a concatenated 4 digit binary nibble,
#I want to be able to translate that nibble into a hex value
#that is used to check against the user's input
在数组中排序后的数字串联后
例如,如果我得到一个[0,1,1,0]数组,我希望它排序并连接显示为一个新值,“1100”
答案 0 :(得分:2)
您正在尝试对列表进行排序和加入。我会使用代码行
''.join(map(str, sorted(nib, reverse = True)))
答案 1 :(得分:0)
例如,如果我得到[0,1,1,0]的数组,我希望它排序并连接以显示为新值,“1100”
L = [0,1,1,0]
print("1"*L.count(1) + "0"*L.count(0)) # O(n)
或者
L = [0,1,1,0]
print("".join(map(str, sorted(L, reverse=True)))) # O(n*log n)
您可以一次滚动所有二进制骰子:
roll_n_dices = lambda n: random.getrandbits(n)
r = roll_n_dices(4)
binstr = bin(r)[2:].zfill(4)
sorted_binstr = "1"*binstr.count("1") + "0"*binstr.count("0")
hex_value = hex(int(sorted_binstr, 2))