检查是否在组合列表中找到了数字组合

问题描述 投票:0回答:1

我正在用Python模拟乘法闪存卡创建一个程序。我已经走得很远,但我无法弄清楚如何不重复数字组合。如何检查是否已经显示了一对数字?

from __future__ import division
from itertools import combinations
import random
amountCorrect = 0
amountMissed = 0
comb = combinations([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 2)

print("Type 0 at any time to exit and see your score.")
while True:
  firstNumber = random.randint(1,12)
  secondNumber = random.randint(1,12)
  ans = int(input("What is " + str(firstNumber) + " x " + str(secondNumber) + ": "))
  if ans == 0:
    break
  elif ans == firstNumber * secondNumber:
    amountCorrect += 1
  else:
    amountMissed += 1

totalProblems = amountCorrect + amountMissed
percentCorrect = amountCorrect/totalProblems

if .9 < percentCorrect <= 1:
  print("Great job, you are doing awesome!")
elif .7 <= percentCorrect <= .89:
  print("You are doing well,keep it up.")
elif .5 <= percentCorrect <= .69:
  print("You are half way to becoming a master.")
else:
  print("Keeping practicing, you will be a master one day.")
python python-2.7 list conditional combinations
1个回答
0
投票

简而言之,使用一组来存储您已经使用过的数字对。这是一些代码。你永远不会在代码中使用combinations,所以我删除了它。

from __future__ import division
import random
amountCorrect = 0
amountMissed = 0
highestNumber = 12

print("Type 0 at any time to exit and see your score.")
used = set()
while True:
  if len(used) == highestNumber ** 2:
      break
  while True:
    firstNumber = random.randint(1,highestNumber)
    secondNumber = random.randint(1,highestNumber)
    pair = (firstNumber, secondNumber)
    if pair not in used:
      used.add(pair)
      break
  ans = int(input("What is " + str(firstNumber) + " x " + str(secondNumber) + ": "))
  if ans == 0:
    break
  elif ans == firstNumber * secondNumber:
    amountCorrect += 1
  else:
    amountMissed += 1

totalProblems = amountCorrect + amountMissed
percentCorrect = amountCorrect/totalProblems

if .9 < percentCorrect <= 1:
  print("Great job, you are doing awesome!")
elif .7 <= percentCorrect <= .89:
  print("You are doing well,keep it up.")
elif .5 <= percentCorrect <= .69:
  print("You are half way to becoming a master.")
else:
  print("Keeping practicing, you will be a master one day.")

我刚刚创建了一个名为used的空集,并添加了一个新的内循环。该循环测试是否已经使用了这对数字。如果是这样,它只是再次循环并尝试一对新的数字。我还添加了一个变量来存储尽可能高的数字,并且used集的测试已满。如果测验已满,我会结束测验。如果没有这个,当尝试所有可能性时,程序将进入无限循环。

请注意,此代码将允许1,22,1。如果您只想允许其中一个,请将(firstNumber, secondNumber)(secondNumber, firstNumber)添加到used集。

© www.soinside.com 2019 - 2024. All rights reserved.