跳轉到內容

A-level 計算機/AQA/試卷 1/框架程式/2025

來自華夏公益教科書,開放書籍,開放世界

C 部分預測。

[編輯 | 編輯原始碼]

D 部分預測

[編輯 | 編輯原始碼]

當前問題是本頁面貢獻者推測的。

1) 使用每個數字多次,但在給定的 5 個數字中不重複?

C#

C# - DM - Riddlesdown

________________________________________________________________

在 CheckNumbersUsedAreAllInNumbersAllowed 中,您可以刪除第 150 行附近的 Temp.Remove(Convert.ToInt32(Item)) 行

static bool CheckNumbersUsedAreAllInNumbersAllowed(List<int> NumbersAllowed, List<string> UserInputInRPN, int MaxNumber)
        {
            List<int> Temp = new List<int>();
            foreach (int Item in NumbersAllowed)
            {
                Temp.Add(Item);
            }
            foreach (string Item in UserInputInRPN)
            {
                if (CheckValidNumber(Item, MaxNumber))
                {
                    if (Temp.Contains(Convert.ToInt32(Item)))
                    {
                        // CHANGE START (line removed)
                        
                        // CHANGE END
                    }
                    else
                    {
                        return false;
                    }
                }
            }
            return true;
        }

C# KN - Riddlesdown

________________________________________________________________

在 FillNumbers 中的 while (NumbersAllowed < 5) 迴圈中,您應該新增一個 ChosenNumber 整型變數,並檢查它是否已存在於允許的數字中,以確保沒有重複項(靠近第 370 行)

static List<int> FillNumbers(List<int> NumbersAllowed, bool TrainingGame, int MaxNumber)
        {
            if (TrainingGame)
            {
                return new List<int> { 2, 3, 2, 8, 512 };
            }
            else
            {
                while (NumbersAllowed.Count < 5)
                {
                    // CHANGE START
                    int ChosenNumber = GetNumber(MaxNumber);
                    while (NumbersAllowed.Contains(ChosenNumber))
                    {
                        ChosenNumber = GetNumber(MaxNumber);
                    }

                    NumbersAllowed.Add(ChosenNumber);
                    // CHANGE END
                }
                return NumbersAllowed;
            }
        }

Python

編輯 FillNumbers() 以新增一個選擇(if)語句,以確保從 GetNumber() 返回的數字尚未附加到列表 NumbersAllowed 中。

def FillNumbers(NumbersAllowed, TrainingGame, MaxNumber):
    if TrainingGame:
        return [2, 3, 2, 8, 512]
    else:
        while len(NumbersAllowed) < 5:
            NewNumber = GetNumber(MaxNumber)
            if NewNumber not in NumbersAllowed:
                NumbersAllowed.append(NewNumber)
            else: continue
        return NumbersAllowed

編輯 CheckNumbersUsedAreAllInNumbersAllowed() 以確保使用者輸入的數字不會從 Temp 列表中刪除,允許重複使用數字。

def CheckNumbersUsedAreAllInNumbersAllowed(NumbersAllowed, UserInputInRPN, MaxNumber):
    Temp = []
    for Item in NumbersAllowed:
        Temp.append(Item)
    for Item in UserInputInRPN:
        if CheckValidNumber(Item, MaxNumber):
            if int(Item) in Temp:
                continue
            else:
                return False            
    return True

2) 更新程式,使帶空格的表示式得到驗證

C#

Riddlesdown - KH

__________________________________________________________________

目前,如果您在數字或運算子之間加空格,程式將無法正常工作,因此您需要修復它。

將移除空格放在使用者輸入下方

  static string RemoveSpaces(string UserInput)
        {
            char[] temp = new char[UserInput.Length];
            string bufferstring = "";
            bool isSpaces = true;

            

            for (int i = 0; i < UserInput.Length; i++)
            {
                temp[i] = UserInput[i];
            }

            while (isSpaces)
            {
                int spaceCounter = 0;
                for (int i = 0; i < temp.Length-1 ; i++)
                {
                    if(temp[i]==' ')
                    {   
                        
                        spaceCounter++;
                        temp = shiftChars(temp, i);
                        
                    }
                }
                if (spaceCounter == 0)
                {
                    isSpaces = false;
                }
                else
                {
                    temp[(temp.Length - 1)] = '¬';
                }
                
            }
            for (int i = 0; i < temp.Length; i++)
            {
                if(temp[i] != ' ' && temp[i] != '¬')
                {
                    bufferstring += temp[i];
                }
            }
            
            return (bufferstring);
        }
        static char[] shiftChars(char[] Input, int startInt)
        {
            for (int i = startInt; i < Input.Length; i++)
            {
                if(i != Input.Length - 1)
                {
                    Input[i] = Input[i + 1];
                }
                else
                {
                    Input[i] = ' ';
                }
            }
            return (Input);
        }


PS
__________________________________________________________________

我懷疑這不會是一個問題,因為它可以在幾行程式碼中解決

        
static bool CheckIfUserInputValid(string UserInput)
        {
            string[] S = UserInput.Split(' ');
            string UserInputWithoutSpaces = "";
            foreach(string s in S)
            {
                UserInputWithoutSpaces += s;
            }
            return Regex.IsMatch(UserInputWithoutSpaces, @"^([0-9]+[\+\-\*\/])+[0-9]+$");
        }

3) 新增指數(使用 ^ 或類似符號)

C#

Riddlesdown - Unknown

_________________________________________________________________________

static bool CheckIfUserInputValid(string UserInput)
{
    // CHANGE START
    return Regex.IsMatch(UserInput, @"^([0-9]+[\+\-\*\/\^])+[0-9]+$");
    // CHANGE END
}

答案


In  ConvertToRPN() add the ^ to the list of operators and give it the highest precedence

}}

Riddlesdown - Unknown 
static List<string> ConvertToRPN(string UserInput)
{
    int Position = 0;
    Dictionary<string, int> Precedence = new Dictionary<string, int>
    {
        // CHANGE START
        { "+", 2 }, { "-", 2 }, { "*", 4 }, { "/", 4 }, { "^", 5 }
        // CHANGE END
    };
    List<string> Operators = new List<string>();
在 EvaluateRPN() 中新增檢查,檢視當前使用者輸入是否包含 ^,如果包含,則讓它計算指數
Riddlesdown - Unknown<br></br>
_________________________________________________________________________<br></br>

static int EvaluateRPN(List<string> UserInputInRPN)
{
    List<string> S = new List<string>();
    while (UserInputInRPN.Count > 0)
    {
        // CHANGE START
        while (!"+-*/^".Contains(UserInputInRPN[0]))
        // CHANGE END
        {
            S.Add(UserInputInRPN[0]);
            UserInputInRPN.RemoveAt(0);
        }
        double Num2 = Convert.ToDouble(S[S.Count - 1]);
        S.RemoveAt(S.Count - 1);
        double Num1 = Convert.ToDouble(S[S.Count - 1]);
        S.RemoveAt(S.Count - 1);
        double Result = 0;
        switch (UserInputInRPN[0])
        {
            case "+":
                Result = Num1 + Num2;
                break;
            case "-":
                Result = Num1 - Num2;
                break;
            case "*":
                Result = Num1 * Num2;
                break;
            case "/":
                Result = Num1 / Num2;
                break;
            // CHANGE START
            case "^":
                Result = Math.Pow(Num1, Num2);
                break;
            // CHANGE END
        }
        UserInputInRPN.RemoveAt(0);
        S.Add(Convert.ToString(Result));
    }

4) 允許使用者包含括號以指定自己的運算順序。

C#

C# - AC - Coombe Wood

________________________________________________________________

while (Position < UserInput.Length)
{
               char CurrentChar = UserInput[Position];
               if (char.IsDigit(CurrentChar))
               {
                   string Number = "";
                   while (Position < UserInput.Length && char.IsDigit(UserInput[Position]))
                   {
                       Number += UserInput[Position];
                       Position++;
                   }
                   UserInputInRPN.Add(Number);
               }
               else if (CurrentChar == '(')
               {
                   Operators.Add("(");
                   Position++;
               }
               else if (CurrentChar == ')')
               {
                   while (Operators.Count > 0 && Operators[Operators.Count - 1] != "(")
                   {
                       UserInputInRPN.Add(Operators[Operators.Count - 1]);
                       Operators.RemoveAt(Operators.Count - 1);
                   }
                   Operators.RemoveAt(Operators.Count - 1);
                   Position++;
               }
               else if ("+-*/^".Contains(CurrentChar))
               {
                   string CurrentOperator = CurrentChar.ToString();
                   while (Operators.Count > 0 && Operators[Operators.Count - 1] != "(" && Precedence[Operators[Operators.Count - 1]] >= Precedence[CurrentOperator])
                   {
                       UserInputInRPN.Add(Operators[Operators.Count - 1]);
                       Operators.RemoveAt(Operators.Count - 1);
                   }
                   Operators.Add(CurrentOperator);
                   Position++;
               }
           }


5) 實現字尾表示式遊戲模式,該模式接收使用者以 RPN 形式輸入的表示式,而不是中綴表示式。

6) 對於無效條目,不要將目標列表向前移動,而是告知使用者條目無效,並提示他們輸入新的條目。

7) 實現一個選單,使用者可以在其中開始新遊戲或退出當前遊戲。

8) 即使顯示了“遊戲結束”訊息,程式也不會結束。確保程式在遊戲結束後結束。

9) 程式在“遊戲結束!”後不會停止,並且沒有使用者退出方式。

10) 練習遊戲 - 只生成 119 作為新目標。

11) 允許使用者單次使用生成一組新的允許數字

12) 允許使用者輸入和處理負數

13) 允許使用者退出遊戲。

14) 使用合格表示式中使用的允許數字數量,增加一個等於該數量的得分獎勵。

15) 針對每個優先順序(目標列表中的第一個數字)連續完成的數字,實施乘法得分獎勵。

16) 如果使用者建立了一個使用所有允許數字的合格表示式,則授予使用者一項特殊獎勵能力(一次使用,直到再次解鎖),允許使用者輸入任何他們選擇的數字,該值將從目標列表中刪除。

17) 新增一個專案,允許您清除任何目標。

C#

C# - AC - Coombe Wood

________________________________________________________________

Console.WriteLine("Do you want to remove a target?");
               UserInput1 = Console.ReadLine().ToUpper();
               if (UserInput1 == "YES")
               {
                   if (Score >= 10)
                   {
                       Console.WriteLine("What number?");
                       UserInput3 = Console.Read();
                       Score = Score - 10;


                   }
                   else
                   {
                       Console.WriteLine("You do not have enough points");
                       Console.ReadKey();
                   }
               }
               else if (UserInput1 == "NO")
               {
                   Console.WriteLine("You selected NO");
               }
               Score--;
               if (Targets[0] != -1)
               {
                   GameOver = true;
               }
               else
               {
                   UpdateTargets(Targets, TrainingGame, MaxTarget);

C# - KH- Riddlesdown

_____________________________________________________________________________


  static bool RemoveTarget(List<int> Targets, string Userinput)
        {
            bool removed = false;
            int targetremove = int.Parse(Userinput);
            for (int Count = 0; Count < Targets.Count - 1; Count++)
            {
                if(targetremove == Targets[Count])
                {
                    removed = true;
                    Targets.RemoveAt(Count);
                }

            }
            if (!removed)
            {
                Console.WriteLine("invalid target");
                return (false);
            }
            return (true);
        }




 while (!GameOver)
            {
                DisplayState(Targets, NumbersAllowed, Score);
                Console.Write("Enter an expression: ");
                UserInput = Console.ReadLine();
                Console.WriteLine(UserInput);
                Console.ReadKey();
                Console.WriteLine();
                if(UserInput.ToUpper() == "R")
                {
                    Console.WriteLine("Enter the target");
                    UserInput = Console.ReadLine();
                    if(RemoveTarget(Targets, UserInput))
                    {
                        Score -= 5;
                    }
                }
                else
                {
                    if (CheckIfUserInputValid(UserInput))
                    {
                        UserInputInRPN = ConvertToRPN(UserInput);
                        if (CheckNumbersUsedAreAllInNumbersAllowed(NumbersAllowed, UserInputInRPN, MaxNumber))
                        {
                            if (CheckIfUserInputEvaluationIsATarget(Targets, UserInputInRPN, ref Score))
                            {
                                RemoveNumbersUsed(UserInput, MaxNumber, NumbersAllowed);
                                NumbersAllowed = FillNumbers(NumbersAllowed, TrainingGame, MaxNumber);
                            }
                        }
                    }
                    Score--;
                }
              
                if (Targets[0] != -1)
                {
                    GameOver = true;
                }
                else
                {
                    UpdateTargets(Targets, TrainingGame, MaxTarget);
                }
            }
            Console.WriteLine("Game over!");
            DisplayScore(Score);
        }


18) 允許的數字沒有重複的數字,可以多次使用

C#

C# - KH- Riddlesdown

________________________________________________________________

在 CheckNumbersUsedAreAllInNumbersAllowed 中,您可以刪除第 150 行附近的 Temp.Remove(Convert.ToInt32(Item)) 行


static bool CheckNumbersUsedAreAllInNumbersAllowed(List<int> NumbersAllowed, List<string> UserInputInRPN, int MaxNumber)
        {
            List<int> Temp = new List<int>();
            foreach (int Item in NumbersAllowed)
            {
                Temp.Add(Item);
            }
            foreach (string Item in UserInputInRPN)
            {
                if (CheckValidNumber(Item, MaxNumber))
                {
                    if (Temp.Contains(Convert.ToInt32(Item)))
                    {
                        // CHANGE START (line removed)
                        
                        // CHANGE END
                    }
                    else
                    {
                        return false;
                    }
                }
            }
            return true;
        }

在 FillNumbers 中的 while (NumbersAllowed < 5) 迴圈中,您應該新增一個 ChosenNumber 整型變數,並檢查它是否已存在於允許的數字中,以確保沒有重複項(靠近第 370 行)

static List<int> FillNumbers(List<int> NumbersAllowed, bool TrainingGame, int MaxNumber)
        {
            if (TrainingGame)
            {
                return new List<int> { 2, 3, 2, 8, 512 };
            }
            else
            {
                while (NumbersAllowed.Count < 5)
                {
                    // CHANGE START
                    int ChosenNumber = GetNumber(MaxNumber);
                    while (NumbersAllowed.Contains(ChosenNumber))
                    {
                        ChosenNumber = GetNumber(MaxNumber);
                    }

                    NumbersAllowed.Add(ChosenNumber);
                    // CHANGE END
                }
                return NumbersAllowed;
            }
        }



19) 更新程式,使帶空格的表示式得到驗證

C#

C# - KH- Riddlesdown

________________________________________________________________

目前,如果您在數字或運算子之間加空格,程式將無法正常工作,因此您需要修復它。

將 RemoveSpaces() 放在使用者輸入下方。


 static string RemoveSpaces(string UserInput)
        {
            char[] temp = new char[UserInput.Length];
            string bufferstring = "";
            bool isSpaces = true;

            

            for (int i = 0; i < UserInput.Length; i++)
            {
                temp[i] = UserInput[i];
            }

            while (isSpaces)
            {
                int spaceCounter = 0;
                for (int i = 0; i < temp.Length-1 ; i++)
                {
                    if(temp[i]==' ')
                    {   
                        
                        spaceCounter++;
                        temp = shiftChars(temp, i);
                        
                    }
                }
                if (spaceCounter == 0)
                {
                    isSpaces = false;
                }
                else
                {
                    temp[(temp.Length - 1)] = '¬';
                }
                
            }
            for (int i = 0; i < temp.Length; i++)
            {
                if(temp[i] != ' ' && temp[i] != '¬')
                {
                    bufferstring += temp[i];
                }
            }
            
            return (bufferstring);
        }
        static char[] shiftChars(char[] Input, int startInt)
        {
            for (int i = startInt; i < Input.Length; i++)
            {
                if(i != Input.Length - 1)
                {
                    Input[i] = Input[i + 1];
                }
                else
                {
                    Input[i] = ' ';
                }
            }
            return (Input);
        }

一種更短的方法

static string RemoveSpaces2(string UserInput)
{
    string newString = "";
    foreach (char c in UserInput)
    {
        if (c != ' ')
        {
            newString += c;
        }
    }

    return newString;
}

此外,不要忘記在第 58 行附近新增對它的呼叫

static void PlayGame(List<int> Targets, List<int> NumbersAllowed, bool TrainingGame, int MaxTarget, int MaxNumber)
{
    ...
    while (!GameOver)
    {
        DisplayState(Targets, NumbersAllowed, Score);
        Console.Write("Enter an expression: ");
        UserInput = Console.ReadLine();
        // Add remove spaces func here
        UserInput = RemoveSpaces2(UserInput);
        Console.WriteLine();
        ...


PS
__________________________________________________________________

另一種更短的解決方案

        
static bool CheckIfUserInputValid(string UserInput)
        {
            string[] S = UserInput.Split(' ');
            string UserInputWithoutSpaces = "";
            foreach(string s in S)
            {
                UserInputWithoutSpaces += s;
            }
            return Regex.IsMatch(UserInputWithoutSpaces, @"^([0-9]+[\+\-\*\/])+[0-9]+$");
        }


20) 困難模式,同一個目標不會出現兩次。

C#

C# - Riddlesdown

________________________________________________________________

static void UpdateTargets(List<int> Targets, bool TrainingGame, int MaxTarget)
{
    for (int Count = 0; Count < Targets.Count - 1; Count++)
    {
        Targets[Count] = Targets[Count + 1];
    }
    Targets.RemoveAt(Targets.Count - 1);
    if (TrainingGame)
    {
        Targets.Add(Targets[Targets.Count - 1]);
    }
    else
    {
        // CHANGE START
        int NewTarget = GetTarget(MaxTarget);
        while (Targets.Contains(NewTarget))
        {
            NewTarget = GetTarget(MaxTarget);
        }

        Targets.Add(NewTarget);
        // CHANGE END
    }
}

此外,在第 355 行更新 CreateTargets

static List<int> CreateTargets(int SizeOfTargets, int MaxTarget)
{
    List<int> Targets = new List<int>();
    for (int Count = 1; Count <= 5; Count++)
    {
        Targets.Add(-1);
    }
    for (int Count = 1; Count <= SizeOfTargets - 5; Count++)
    {
        // CHANGE START
        int NewTarget = GetTarget(MaxTarget);
        while (Targets.Contains(NewTarget))
        {
            NewTarget = GetTarget(MaxTarget);
        }

        Targets.Add(NewTarget);
        // CHANGE END
    }
    return Targets;
}


21) 清除目標後,阻止其再次生成。

C#

C# - Riddlesdown

________________________________________________________________


internal class Program
    {
        static Random RGen = new Random();
        // CHANGE START
        static List<int> TargetsUsed = new List<int>();
        // CHANGE END
        ...

接下來,在底部建立這些新函式

// CHANGE START
static bool CheckIfEveryPossibleTargetHasBeenUsed(int MaxNumber)
{
    if (TargetsUsed.Count >= MaxNumber)
    {
        return true;
    }
    else
    {
        return false;
    }
}

static bool CheckAllTargetsCleared(List<int> Targets)
{
    bool allCleared = true;
    foreach (int i in Targets)
    {
        if (i != -1)
        {
            allCleared = false;
        }
    }

    return allCleared;
}
// CHANGE END

更新 CreateTargets(第 366 行)和 UpdateTargets(第 126 行),以便它們檢查生成的數字是否在我們建立的 TargetsUsed 列表中

static List<int> CreateTargets(int SizeOfTargets, int MaxTarget)
{
    List<int> Targets = new List<int>();
    for (int Count = 1; Count <= 5; Count++)
    {
        Targets.Add(-1);
    }
            
    for (int Count = 1; Count <= SizeOfTargets - 5; Count++)
    {
        // CHANGE START
        int SelectedTarget = GetTarget(MaxTarget);
        Targets.Add(SelectedTarget);
        if (!TargetsUsed.Contains(SelectedTarget))
        {
            TargetsUsed.Add(SelectedTarget);
        }
        // CHANGE END
    }
    return Targets;
}


static void UpdateTargets(List<int> Targets, bool TrainingGame, int MaxTarget)
{
    for (int Count = 0; Count < Targets.Count - 1; Count++)
    {
        Targets[Count] = Targets[Count + 1];
    }
    Targets.RemoveAt(Targets.Count - 1);
    if (TrainingGame)
    {
        Targets.Add(Targets[Targets.Count - 1]);
    }
    else
    {
        // CHANGE START
        if (TargetsUsed.Count == MaxTarget)
        {
            Targets.Add(-1);
            return;
        }
        int ChosenTarget = GetTarget(MaxTarget);
        while (TargetsUsed.Contains(ChosenTarget))
        {
            ChosenTarget = GetTarget(MaxTarget);    
        }
        Targets.Add(ChosenTarget);
        TargetsUsed.Add(ChosenTarget);
        // CHANGE END
    }
}

最後,在主遊戲迴圈(第 57 行)中,您應該新增檢查,以確保使用者已清除所有可能的數字

    ...
    while (!GameOver)
    {
        DisplayState(Targets, NumbersAllowed, Score);
        Console.Write("Enter an expression: ");
        UserInput = Console.ReadLine();
        Console.WriteLine();
        if (CheckIfUserInputValid(UserInput))
        {
            UserInputInRPN = ConvertToRPN(UserInput);
            if (CheckNumbersUsedAreAllInNumbersAllowed(NumbersAllowed, UserInputInRPN, MaxNumber))
            {
                if (CheckIfUserInputEvaluationIsATarget(Targets, UserInputInRPN, ref Score))
                {
                    RemoveNumbersUsed(UserInput, MaxNumber, NumbersAllowed);
                    NumbersAllowed = FillNumbers(NumbersAllowed, TrainingGame, MaxNumber);
                }
            }
        }
        Score--;
        // CHANGE START
        if (Targets[0] != -1 || (CheckIfEveryPossibleTargetHasBeenUsed(MaxNumber) && CheckAllTargetsCleared(Targets)))
        {
            GameOver = true;
        }
        else
        {
            UpdateTargets(Targets, TrainingGame, MaxTarget);
        }
        // CHANGE END
    }
    Console.WriteLine("Game over!");
    DisplayScore(Score);



22) 清除目標時,在目標列表中該目標的位置新增一個 £ 符號。當 £ 符號到達跟蹤器的末尾時,得分增加 1。

C#

C# -

________________________________________________________________


23) 實現獲勝條件,允許玩家透過獲得一定的分數贏得遊戲。允許使用者選擇難度,例如簡單(10)、普通(20)、困難(40)。

24) 散彈槍。如果一個表示式完全等於一個目標,則得分增加 3,並像往常一樣刪除目標。如果計算結果與目標相差 1,則得分增加 1,並且也將刪除這些目標。

25) 每次使用者輸入表示式時,都會打亂所有目標的當前位置(但不能將數字推得更靠近末尾)。

26) 飛毛腿。實現一種模式,目標列表移動的次數等於當前玩家的分數。目標到達跟蹤器末尾時,不會結束遊戲,而是從他們的得分中減去 1。如果他們的得分變為負數,玩家就輸了。

27) 允許使用者使用文字檔案儲存當前遊戲狀態,並實現當他們開始程式時載入遊戲的可能性。

28) X 的倍數。程式應該在每回合隨機生成一個數字,例如 3,如果使用者建立了一個表示式刪除了該數字的倍數目標,則給予他們一個等於倍數的得分獎勵(在本例中,額外獲得 3 分)。

29) 驗證使用者的輸入,在接受表示式之前確認他們的選擇。

30) 質數時間拳擊。如果完成的目標是一個質數,則銷燬該質數兩側的目標(將其計入得分)。

31) Josh Lord。

32) 使程式面向物件

33) 不要使用逆波蘭表示式

34) 允許使用者指定五個 NumbersAllowed 中的最大數字。

35) 允許使用者儲存和重新載入遊戲。

Python

此解決方案側重於記錄上一局遊戲中列印的所有值,覆蓋得分,然後像以前一樣繼續遊戲。可以儲存遊戲日誌,重新載入,然後繼續,然後再儲存,而不會丟失資料。

PlayGame() 的頂部新增選擇(if)語句,以允許使用者輸入所需的動作

Score = 0
    GameOver = False
    if (input("Load last saved game? (y/n): ").lower() == "y"):
        with open("savegame.txt", "r") as f:
            lines = []
            for line in f:
                lines.append(line)
                print(line)
            Score = re.search(r'\d+', lines[-2])
    else:
        open("savegame.txt", 'w').close()
    while not GameOver:

更改 DisplayScore()DisplayNumbersAllowed()DisplayTargets(),以允許返回值而不是列印值。

def DisplayScore(Score):
    output = str("Current score: " + str(Score))
    print(output)
    print()
    print()
    return output
    
def DisplayNumbersAllowed(NumbersAllowed):
    list_of_numbers = []
    for N in NumbersAllowed:
        list_of_numbers.append((str(N) + "  "))
    output = str("Numbers available: " + "".join(list_of_numbers))
    print(output)
    print()
    print()
    return output
    
def DisplayTargets(Targets):
    list_of_targets = []
    for T in Targets:
        if T == -1:
            list_of_targets.append(" ")
        else:
            list_of_targets.append(str(T))
        list_of_targets.append("|")
    output = str("|" + "".join(list_of_targets))
    print(output)
    print()
    print()
    return output

列印返回值,以及追加到儲存檔案。 <syntaxhighlight> def DisplayState(Targets, NumbersAllowed, Score)

   DisplayTargets(Targets)
   DisplayNumbersAllowed(NumbersAllowed)
   DisplayScore(Score)
   try:
       with open("savegame.txt", "a") as f:
           f.write(DisplayTargets(Targets) + "\n\n" + DisplayNumbersAllowed(NumbersAllowed) + "\n\n" + DisplayScore(Score) + "\n\n")
   except Exception as e:
       print(f"There was an exception: {e}")
</syntaxhighlighting>
華夏公益教科書