我是 Python 编程的初学者,并且在我当前的作业中遇到了问题。作业内容如下...
- 您的程序应秘密生成一个 4 位数字(或仅包含数字,长度为 4 个字符的字符串),其中没有重复的数字。
- 然后,您的程序应要求用户输入对代码的猜测。用户的猜测应该是 4 个字符长,只包含数字,没有重复的数字。您的程序应在对输入进行评分之前验证输入是否有效,并在必要时提示用户重新输入输入。无效输入不计入密码破解者的猜测次数。您的代码可能会忽略(去除)输入中的前导或尾随空格,但应将内部空格计为不正确的输入。
- 在每一轮,打印轮数并得到用户的猜测。如果输入有效,则转弯的输出应该是用户的猜测,然后是反馈。反馈是一个 4 字符的字符串:“X”代表正确位置的每个数字;'O' 表示代码中但位置不正确的每个数字;'-' 对于所有其他人。注意 X 和 O 应该在一起;反馈只是每种类型的钉子数量,而不是哪些钉子或它们在哪里。
- 保留所有猜测和反馈的历史记录,以便在每一轮都为用户打印。
现在我只专注于作业的“反馈”部分。我的代码目前是:
import random
def validateInput():
inputGuess = input("Enter your guess as 4 numbers:")
while True:
if len(inputGuess) != 4:
inputGuess = input("Enter your guess as 4 numbers:")
else:
numberList = list(inputGuess) ##
invalidNumbers = False
for number in numberList:
if number not in ['1','2','3','4','5','6','7','8','9']:
invalidNumbers = True
if invalidNumbers == True:
print ("Possible numbers are 1, 2, 3, 4, 5, 6, 7, 8, 9.")
inputGuess = input("Enter your guess as 4 numbers:")
else:
return numberList
guessesRemaining=10
code=['1','2','3','4']
while guessesRemaining > 0:
report=[]
guess=validateInput()
guessesRemaining -= 1
if guess[0] == code[0]:
report.append("X")
if guess[1] == code[1]:
report.append("X")
if guess[2] == code[2]:
report.append("X")
if guess[3] == code[3]:
report.append("X")
tempCode=sorted(code)
tempGuess=sorted(guess)
if tempCode[0]==tempGuess[0]:
report.append("O")
if tempCode[1]==tempGuess[1]:
report.append("O")
if tempCode[2]==tempGuess[2]:
report.append("O")
if tempCode[3]==tempGuess[3]:
report.append("O")
report2=report[0:4]
dash=["-","-","-","-"]
report3=report2+dash
report4=report3[0:5]
print(report4)
例如,如果用户猜测 1879 并且代码是 1234,我会收到“XO --”但我想收到“X---”。此外,任何关于简化我的代码的建议都会很棒。为简单起见,我暂时将“随机代码”设为 [1,2,3,4]。