Analyse der tatsächlichen Fragen der GESP Python Level 1- und Level 2-Programmierfragen im Dezember 2023

1. Dezember 2023 GESP Python Level 1 Programmierfragen

[Level-1-Programmierfrage 1]

[Name der Testfrage]: Xiao Yangs Prüfung

【Problembeschreibung】

Heute ist Sonntag X. Xiao Yang wird die Prüfung in N Tagen ablegen. Können Sie herausfinden, welcher Wochentag Xiao Yangs Prüfungstag ist? (7 wird in dieser Frage verwendet, um den Sonntag darzustellen)

[Beschreibung eingeben]

Geben Sie 2 Zeilen ein, die erste Zeile ist eine Ganzzahl X (1≤X≤7); die zweite Zeile ist eine Ganzzahl N (1≤N≤364).

[Ausgabebeschreibung]

Geben Sie eine Ganzzahl aus, die den Wochentag angibt, an dem Xiao Yangs Prüfungstag ist.

【analysieren】

Da die Woche auf einem 7-Tage-Zyklus basiert, kann der Wochentag der Rest von (Starttag der Woche + Anzahl der Tage)/7 sein. Sie können die Modulo-Operation (%) verwenden, aber das Ergebnis von %7 ist 0~6, 7% 7=0, also müssen Sie zuerst hinzufügen

【Komplettes Programm】

x = int(input())  # 输入当天星期x,1≤x≤7
n = int(input())  # 输入n,隔n天考试
print((x - 1 + n) % 7 + 1)

【Operationsergebnis】

[Level-1-Programmierfrage 2]

[Name der Testfrage]: Xiao Yang zählt

【Problembeschreibung】

Xiao Yang muss von 1 bis N zählen. Während des Zählvorgangs hofft Xiao Yang, ein Vielfaches von M zu überspringen. Wenn beispielsweise N=5 und M=2 ist, muss Xiao Yang nacheinander 1, 3 und 5 melden.

Geben Sie nun bitte die von Xiao Yang gemeldeten Zahlen der Reihe nach aus.

[Beschreibung eingeben]

Geben Sie 2 Zeilen ein, die erste Zeile ist eine Ganzzahl N (1 ≤ N ≤ 1.000); die zweite Zeile ist eine Ganzzahl M (2 ≤ M ≤ 100).

[Ausgabebeschreibung]

Geben Sie mehrere Zeilen aus, die nacheinander die von Xiao Yang gemeldeten Zahlen darstellen.

【analysieren】

Da die gemeldete Zahl bei 1 bis N beginnt und Vielfache von M übersprungen werden, handelt es sich bei der gemeldeten Zahl um eine Zahl, die nicht durch M teilbar ist.

【Komplettes Programm】

n = int(input())           # 输入n,1≤n≤1,000
m = int(input())           # 输入m(2≤m≤100)
for i in range(1, n+1):
    if i % m:              # 也可写成if i % m != 0
        print(i)

【Operationsergebnis】

2. Dezember 2023 GESP Python Level 2 Programmierfragen

[Level-2-Programmierfrage 1]

[Name der Testfrage]: Xiao Yangs Frage

【Problembeschreibung】

Um sich auf die Prüfung vorzubereiten, muss Xiao Yang jeden Tag Fragen beantworten. Am ersten Tag beantwortete Xiao Yang Frage a; am zweiten Tag beantwortete Xiao Yang Frage b; ab dem dritten Tag entsprach die Anzahl der Fragen, die Xiao Yang jeden Tag beantwortete, der Summe der beiden Tage zuvor.

Darüber hinaus legte Xiao Yang auch fest, dass er, wenn er an einem bestimmten Tag mehr als oder gleich m Fragen beantwortete, in den folgenden Tagen keine Fragen mehr beantworten würde.

Entschuldigung, wie viele Fragen hat Xiao Yang am neunten Tag insgesamt beantwortet?

[Beschreibung eingeben]

Insgesamt 4 Zeilen. In der ersten Zeile gibt es eine Ganzzahl a, in der zweiten Zeile eine Ganzzahl b, in der dritten Zeile eine Ganzzahl m und in der vierten Zeile eine Ganzzahl N.

Garantiert 0≤a,b≤10; a,b≤M≤1.000.000; 3≤N≤364.

[Ausgabebeschreibung]

Eine Ganzzahl pro Zeile, die angibt, wie viele Fragen Xiao Yang insgesamt in N Tagen beantwortet hat.

【analysieren】

Die Berechnung dieser Frage ähnelt der Berechnung der Fibonacci-Folge, außer dass die Anfangswerte von a und b nicht unbedingt 1 sind. Die Berechnung der Anzahl der Fragen pro Tag ist ähnlich. Darüber hinaus wird das Problem beendet, wenn m Fragen an einem bestimmten Tag beantwortet werden. Am n-ten Tag wird das Problem beendet, auch wenn m Fragen an diesem Tag nicht beantwortet werden. Die kumulative Anzahl der Fragen wird berechnet.

【Komplettes Programm】

a = int(input())      # 输入第1天做题数a
b = int(input())      # 输入第2天做题数b
m = int(input())      # 输入某天做题数为m时,不再做题(终止)
n = int(input())      # 输入第n天
ans = a + b           # 前2天做题数
for i in range(3, n + 1):  # 从第3天起,到第n天每天做题数
     c = a + b        # 求第i天做题数
     ans += c         # 加入总做题数
     a = b            # 更新a为新的前2天的做题数
     b = c            # 更新b为新的前1天的做题数
     if c >= m:       # 如果当天做数达到m,则终止循环(不再做题)
          break
print(ans)

【Operationsergebnis】

[Level-2-Programmierfrage 2]

[Name der Testfrage]: Xiao Yangs H-förmige Matrix

【Problembeschreibung】

Xiao Yang möchte eine N × N H-förmige Matrix erstellen (N ist eine ungerade Zahl). Insbesondere hat diese Matrix N Zeilen, jede Zeile hat N Zeichen, wobei die Spalten ganz links und ganz rechts | sind und die mittlere Zeile (Das Das heißt, das 2. bis N-1 Zeichen in Zeile (N+1)/2) sind alle „-“, und alle anderen Zeichen sind Kleinbuchstaben halber Breite a.

Bitte helfen Sie Xiao Yang, die entsprechende „H-förmige Matrix“ basierend auf dem angegebenen N auszudrucken.

[Beschreibung eingeben]

In jeder Zeile gibt es eine ganze Zahl N (5 ≤ N ≤ 49, wodurch sichergestellt wird, dass N eine ungerade Zahl ist).

[Ausgabebeschreibung]

Geben Sie die entsprechende „H-förmige Matrix“ aus.

Bitte geben Sie strikt nach den Formatvorgaben aus und fügen Sie keine Leerzeichen, Satzzeichen, Leerzeilen oder andere Symbole ohne Genehmigung ein. Sie sollten genau N Zeilen ausgeben, wobei jede Zeile genau N Zeichen enthält, mit Ausnahme des Zeilenumbruchzeichens, das entweder -, | oder a ist. Um Punkte zu erhalten, muss Ihre Ausgabe vollständig mit der Standardantwort übereinstimmen. Bitte überprüfen Sie dies sorgfältig, bevor Sie sie absenden.

【analysieren】

Wenn die Zeilennummern bei 0 beginnen, ist die Zeilennummer der mittleren Zeile int(N/2). Spalte 1 und Spalte N sind beide „|“, die Spalten 2 bis N-1, die mittlere Zeile gibt (N-2) „-“ aus und die anderen Zeilen geben (N-2) „a“ aus.

【Komplettes Programm】

n = int(input())         # 输入n,为行数
for i in range(n):       # 0≤i<n
    print("|", end="")   # 输出第1列(不换行)
    if i == int(n/2):    # 如是正中间行
        print("-"*(n-2), end="")  # 输出(n-2)个“-”
    else:
        print("a"*(n-2), end="")  # 其他行输出(n-2)个“a”
    print("|")           # 输出第n列,并换行

【Operationsergebnis】

Ich denke du magst

Origin blog.csdn.net/hz_zhangrl/article/details/135098661
Empfohlen
Rangfolge