我编写了一个非常简单的程序,创建一个随机字符串,要求用户输入一个字符串,并计算出他错过/命中了多少个字母。一直持续到他猜到了随机串。在
由于某些原因,当我试图运行它时,我得到了一个错误:“to many data to process”。我以前从来没有见过这种错误,也不知道是什么出了问题,为什么。在
我很乐意得到你的意见。下面是我写的代码:
import random
import string
def cows_and_bulls(real_string, guess_string):
hits = 0
missed = 0
hits_set = []
missed_set = []
for index, letter in enumerate(guess_string):
if real_string[index] == letter:
hits +=1
hits_set.append(letter)
elif letter in real_string and letter not in hits_set:
missed +=1
missed_set.append(letter)
print(hits, missed)
return ("hits:" +str( hits), "missed:" +str( missed))
def main():
random_string = ''.join([random.choice(string.ascii_letters) for n in
range(5)])
guess_string = input("please enter a guess string")
if len(guess_string) != 5 or guess_string.isalpha == False:
print("please enter a new guess")
guess_string = input("please enter a guess string")
win = False
while win is not True:
hits,missed = cows_and_bulls(random_string, guess_string)
if hits == len(random_string):
print("you win!")
win = True
break
if __name__ == '__main__':
main()
print(cows_and_bulls("abcd", "abdz"))
另外,你需要修正牛和牛的方法。更改:
到
^{pr2}$没有变化,排队
您正在比较字符串和整数。 即使您猜测字符串,也会有一个无限循环,因为
'hits:5' == 5
为False。在你需要修正你的主要功能。在
它不会给你你想要的行为。如果同一个猜测的长度是5(我在jupyter笔记本中得到的行为),那么像现在这样运行这个函数将导致打印命中和丢失的无休止的循环。根据运行环境的不同,这可能会带来麻烦。在
你的主菜是这样的:
应该能解决问题。如果你的主函数是这样的,那么每次玩家没有赢的时候你都会请求输入,并且在获胜后循环停止。此外,玩家将被提示提供新的输入每次猜测是错误的。在
在我这一方面,这修复了被困在一个无休止的循环打印命中和错过相同的猜测。在
相关问题 更多 >
编程相关推荐