*Q.Randomly生成一个4位数的数字.让用户猜一个四位数的数字.对于用户在正确位置正确猜出的每一个数字,他们都有一个“牛”。对于每一个数字,用户猜测错误的地方的数字是“牛市”。
每次用户猜测,告诉他们有多少“牛”和“公牛”。一旦用户猜对了号码,游戏就结束了。跟踪用户在整个游戏中的猜测次数,并在游戏结束时告诉用户。
**现在的问题是,我已经制作了程序,但它可以生成任意4位数的数字,这时问题就出现了。例如:
生成的号码是3568。
用户类型: 3266
然后用户得到2头母牛和2头公牛。
但是用户无法知道在他输入的数字中哪些是正确的数字。
我想要一个能告诉用户他猜对了的数字的函数。在这个例子中,程序应该告诉用户3和6在以下地方是正确的。**
import random
def compare_number(number, user_guess):
cowbull = [0, 0]
for i in range(len(number)):
if number[i] == user_guess[I]:
cowbull[1] += 1
else:
cowbull[0] += 1
return cowbull
if __name__ == "__main__":
playing = True
number = str(random.randint(1000, 10000))
guesses = 0
print("Let's Play A Game Of Cows And Bulls!")
print("I Will Generate A 4 Digit Number, And You Have To Guess The Numbers One Digit At A Time.")
print("For Every Number I The Wrong Place, You Get A Bull. For Every Number In The Right Place,
You Get A Cow.")
print("The Game Will End When You Get 4 Bulls.")
print("Type Exit At Any Prompt To Exit!")
while playing:
user_guess = input("Give Me The Best You Got!: ")
if user_guess.lower() == "exit":
break
cowbull_count = compare_number(number, user_guess)
guesses += 1
print(f"You Have {cowbull_count[1]} Cows, And {cowbull_count[0]} Bulls.")
if cowbull_count[1] == 4:
playing = False
print(f"You Win The Game After {guesses} Guess(es)!. The Number Was {number}.")
break
else:
print(f"Your Guess Isn't Quite Right, Tyr Again!.")发布于 2020-05-04 04:33:47
你可以这样做:
import random
def compare_number(number, user_guess):
cowbull = [0, 0, 0, 0]
for i in range(len(number)):
if number[i] == user_guess[i]:
cowbull[i] += 1
return cowbull
if __name__ == "__main__":
playing = True
number = str(random.randint(1000, 10000))
guesses = 0
print("Let's Play A Game Of Cows And Bulls!")
print("I Will Generate A 4 Digit Number, And You Have To Guess The Numbers One Digit At A Time.")
print("For Every Number I The Wrong Place, You Get A Bull. For Every Number In The Right Place, You Get A Cow.")
print("The Game Will End When You Get 4 Bulls.")
print("Type Exit At Any Prompt To Exit!")
while playing:
user_guess = input("Give Me The Best You Got!: ")
if user_guess.lower() == "exit":
break
cowbull_count = compare_number(number, user_guess)
guesses += 1
correct = sum(cowbull_count)
wrong = len(number) - correct
print(f"You Have {correct} Cows, And {wrong} Bulls.")
if correct == 4:
playing = False
print(f"You Win The Game After {guesses} Guess(es)!. The Number Was {number}.")
break
else:
print(f"Your Guess Isn't Quite Right, Try Again!.")
if correct >= 1:
print(str([user_guess[i] for i, x in enumerate(cowbull_count) if x == 1]) + " was correct!")对原始代码所做的更改:
,
。
样本运行

发布于 2020-05-03 22:18:25
可以替换比较编号函数以打印正确数字的索引和值。
def compare_number(number, user_guess):
cowbull = [0, 0]
for i in range(len(number)):
if number[i] == user_guess[I]:
cowbull[1] += 1
print("The number " + number[i] + " at index " + i " is correct")
else:
cowbull[0] += 1
print("The number " + number[i] + " at index " + i " is incorrect")
return cowbull发布于 2020-05-03 22:29:04
添加另一个返回位置列表的方法:4个元素列表,如果用户没有猜到数字,则为0;如果没有,则添加1个。您可以在您的功能中使用它。
def digit_position(number, user_guess):
right_guesses = [0, 0, 0, 0]
for i in range(len(number)):
if number[i] == user_guess[i]:
right_guesses[i] = 1
return right_guesseshttps://stackoverflow.com/questions/61582316
复制相似问题