Grundkenntnisse in Python (2): Bedingte Anweisungen, Schleifenanweisungen, Ableitungen

Fügen Sie hier eine Bildbeschreibung ein

1 Bedingte Anweisung

1.1 if-Anweisung

if expression:
    expr_true_suite
  • Wenn der Anweisungsblock expr_true_suitedes Codes nur dann gültig expressionist, wenn der bedingte Ausdruck wahr ist, wenn er implementiert ist, führen wir die Anweisung unmittelbar nach dem Codeblock weiter aus.
  • Single - Anweisung , wenn expressionder Bedingungsausdruck von Booleschen Operatoren and, orund notmehr bedingten zu erreichen.

【Beispiel】

if 2 > 1 and not 2 > 3:
    print('Correct Judgement!')
# Correct Judgement!

1.2 if-else-Anweisung

if expression:
    expr_true_suite
else
    expr_false_suite
  • Python stellt das else verwendet, das mit if verwendet wird. Wenn das Ergebnis des bedingten Ausdrucks der if-Anweisung false ist, führt das Programm den Code nach der else-Anweisung aus.

【Beispiel】

temp = input("猜一猜小仙女想的是哪个数字?")
guess = int(temp) # input 函数将接收的任何数据类型都默认为 str。
if guess == 666:
    print("你太了解小仙女的心思了!")
    print("哼,猜对也没有奖励!")
else:
    print("猜错了,小仙女现在心里想的是666!")
print("游戏结束,不玩儿啦!")

ifSätze unterstützen die Verschachtelung, was bedeutet, dass ein ifSatz in einen anderen ifSatz eingebettet wird , um verschiedene Ebenen der Auswahlstruktur zu bilden. Python verwendet Einrückungen anstelle von geschweiften Klammern, um Codeblockgrenzen zu markieren. Achten Sie daher besonders auf elsedas Problem des Aufhängens.
【Beispiel】

hi = 6
if hi > 2:
    if hi > 7:
        print('好棒!好棒!')
else:
    print('切~')

1.3 if-elif-else-Anweisung

if expression1:
    expr1_true_suite
elif expression2:
    expr2_true_suite
    .
    .    
elif expressionN:
    exprN_true_suite
else:
    expr_false_suite
  • Die elif-Anweisung ist das else if, mit dem überprüft wird, ob mehrere Ausdrücke wahr sind, und der Code in einem bestimmten Codeblock ausgeführt wird, wenn er wahr ist.

【Beispiel】

temp = input('请输入成绩:')
source = int(temp)
if 100 >= source >= 90:
    print('A')
elif 90 > source >= 80:
    print('B')
elif 80 > source >= 60:
    print('C')
elif 60 > source >= 0:
    print('D')
else:
    print('输入错误!')

1.4 Schlüsselwort bestätigen

  • assertWird verwendet, um einen Ausdruck zu beurteilen und AssertionErroreine Ausnahme auszulösen, wenn die Ausdrucksbedingung falsch ist .
    Assertions können direkt einen Fehler zurückgeben, wenn die Bedingungen nicht erfüllt sind und das Programm ausgeführt wird, ohne darauf zu warten, dass das Programm nach dem Ausführen abstürzt. Beispielsweise kann unser Code nur unter dem Linux-System ausgeführt werden. Sie können zunächst feststellen, ob das aktuelle System die Bedingungen erfüllt.

【Beispiel】

my_list = ['lsgogroup']
my_list.pop(0)
assert len(my_list) > 0
# AssertionError
  • Während des Komponententests können damit Prüfpunkte im Programm platziert werden. Nur die Bedingung ist True. Das Programm kann normal funktionieren.
    【Beispiel】
assert 3 > 7
# AssertionError

2 Schleifenanweisung

2.1 while-Schleife

whileDie grundlegendste Form einer Anweisung enthält oben einen Booleschen Ausdruck und eine oder mehrere whileeingerückte Anweisungen, die zum Codeblock gehören.

while 布尔表达式:
    代码块

whileDer Schleifencodeblock wird so lange wiederholt, bis der Wert des Booleschen Ausdrucks Boolescher Wert false ist.
Wenn der Boolesche Ausdruck keinen <、>、==、!=、in、not ingleichen Operator hat, können auch nur Bedingungen wie Werte angegeben werden. Wenn whileeine Ganzzahl ungleich Null später geschrieben wird, wird sie als wahrer Wert angesehen und der Schleifenkörper wird ausgeführt. 0Wenn sie geschrieben wird , wird sie als falscher Wert angesehen und der Schleifenkörper wird nicht ausgeführt. Sie können auch schreiben str、listoder eine beliebige Sequenz. Eine Länge ungleich Null wird als wahrer Wert angesehen und der Schleifenkörper wird ausgeführt, andernfalls wird er als falscher Wert angesehen und der Schleifenkörper wird nicht ausgeführt.

【Beispiel】

count = 0
while count < 3:
    temp = input("不妨猜一下小哥哥现在心里想的是那个数字:")
    guess = int(temp)
    if guess > 8:
        print("大了,大了")
    else:
        if guess == 8:
            print("你是小哥哥心里的蛔虫吗?")
            print("哼,猜对也没有奖励!")
            count = 3
        else:
            print("小了,小了")
    count = count + 1
print("游戏结束,不玩儿啦!")

[Beispiel] Der Boolesche Ausdruck gibt 0 zurück und die Schleife wird beendet.

string = 'abcd'
while string:
    print(string)
    string = string[1:]
# abcd
# bcd
# cd
# d

2.2 while-else-Schleife

while 布尔表达式:
    代码块
else:
    代码块

Wenn die whileSchleife normal ausgeführt wird, wird die elseAusgabe whileausgeführt . Wenn beispielsweise die Anweisung, die aus der Schleife springt, in der Schleife ausgeführt wird, breakwird elseder Inhalt des Codeblocks nicht ausgeführt .
【Beispiel】

count = 0
while count < 5:
    print("%d is  less than 5" % count)
    count = count + 1
else:
    print("%d is not less than 5" % count)    
# 0 is  less than 5
# 1 is  less than 5
# 2 is  less than 5
# 3 is  less than 5
# 4 is  less than 5
# 5 is not less than 5

【Beispiel】

count = 0
while count < 5:
    print("%d is  less than 5" % count)
    count = 6
    break
else:
    print("%d is not less than 5" % count)
# 0 is  less than 5

2.3 für Schleife

forEine Schleife ist eine iterative Schleife, die einem allgemeinen Sequenziterator in Python entspricht. Sie kann jede geordnete Sequenz wie str、list、tupleusw. durchlaufen und auch jedes iterierbare Objekt wie z dict.

for 迭代变量 in 可迭代对象:
    代码块

In jeder Schleife wird die Iterationsvariable auf das aktuelle Element des iterierbaren Objekts gesetzt und dem Codeblock bereitgestellt.
【Beispiel】

for i in 'ILoveMAOMAO':
    print(i, end=' ')  # 不换行输出
# I L o v e M A O M A O

【Beispiel】

member = ['张三', '李四', '刘德华', '刘六', '周润发']
for i in range(len(member)):
    print(member[i])
# 张三
# 李四
# 刘德华
# 刘六
# 周润发

【Beispiel】

dic = {
    
    'a': 1, 'b': 2, 'c': 3, 'd': 4}
for key, value in dic.items():
    print(key, value, sep=':', end=' ')    
# a:1 b:2 c:3 d:4 

2.4 for-else-Schleife

for 迭代变量 in 可迭代对象:
    代码块
else:
    代码块

Wenn die forSchleife normal ausgeführt wird, wird die elseAusgabe forausgeführt . Wenn beispielsweise die aus der Schleife springende Anweisung in der Schleife ausgeführt wird, breakwird elseder Inhalt des Codeblocks nicht while - elsewie die Anweisung ausgeführt.
【Beispiel】

for num in range(10, 20):  # 迭代 10 到 20 之间的数字
    for i in range(2, num):  # 根据因子迭代
        if num % i == 0:  # 确定第一个因子
            j = num / i  # 计算第二个因子
            print('%d 等于 %d * %d' % (num, i, j))
            break  # 跳出当前循环
    else:  # 循环的 else 部分
        print(num, '是一个质数')
# 10 等于 2 * 5
# 11 是一个质数
# 12 等于 2 * 6
# 13 是一个质数
# 14 等于 2 * 7
# 15 等于 3 * 5
# 16 等于 2 * 8
# 17 是一个质数
# 18 等于 2 * 9
# 19 是一个质数

breakDie Anweisung kann aus der Schleife der aktuellen Ebene springen.
continueBeenden Sie diesen Zyklus und starten Sie den nächsten Zyklus.
passEs ist eine leere Anweisung, führt keine Operation aus, dient nur als Platzhalter und hat die Aufgabe, die Integrität der Programmstruktur aufrechtzuerhalten.

3 Iterator

3.1 range () Funktion

range([start,] stop[, step=1])
  • Dieses BIF (Integrierte Funktionen) verfügt über drei Parameter, von denen zwei in eckigen Klammern angegeben sind, um anzuzeigen, dass diese beiden Parameter optional sind.
  • step=1 Gibt an, dass der Standardwert des dritten Parameters 1 ist.
  • rangeDie Funktion dieses BIF besteht darin, eine Folge von Zahlen zu erzeugen, startdie mit dem Wert des stopParameters beginnt und mit dem Wert des Parameters endet. Die Folge enthält startWerte, jedoch keine stopWerte.

【Beispiel】

for i in range(2, 5):  # 不包含9
    print(i)
# 2
# 3
# 4

3.2 Funktion enumerate ()

enumerate(sequence, [start=0])
  • Sequenz - Eine Sequenz, ein Iterator oder ein anderes Objekt, das die Iteration unterstützt.
  • Start - die Startposition des Index.
  • Rückgabe-Aufzählungsobjekt (Aufzählung)
    [Beispiel]
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
lst = list(enumerate(seasons))
print(lst)
# [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]

lst = list(enumerate(seasons, start=1))  # 下标从 1 开始
print(lst)
# [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

enumerate()Kombinierte Verwendung mit for-Schleife

for i, a in enumerate(A)
    do something with a  

Wenn enumerate(A)nur Adas Element zurückgegeben wird, ist das Element auch ein Punkt auf einen Indexwert (standardmäßig von Null). Darüber hinaus kann mit enumerate(A, j)auch der Startwert des Index ermittelt werden j.
【Beispiel】

languages = ['Python', 'R', 'Matlab', 'C++']
for language in languages:
    print('I love', language)
print('Done!')
'''
I love Python
I love R
I love Matlab
I love C++
Done!
'''

4 Derivat

4.1 Listenverständnis

[ expr for value in collection [if condition] ]

【Beispiel】

x = [i ** 2 for i in range(1, 10)]
print(x)
# [1, 4, 9, 16, 25, 36, 49, 64, 81]

【Beispiel】

x = [(i, i ** 2) for i in range(6)]
print(x)
# [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]

【Beispiel】

x = [i for i in range(100) if (i % 2) != 0 and (i % 3) == 0]
print(x)
# [3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]

4.2 Tupelverständnis

( expr for value in collection [if condition] )

【Beispiel】

a = (x for x in range(10))
print(a)
# <generator object <genexpr> at 0x0000025BE511CC48>
print(tuple(a))
# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

4.3 Wörterbuchverständnis

{
    
     key_expr: value_expr for value in collection [if condition] }

【Beispiel】

b = {
    
    i: i % 2 == 0 for i in range(10) if i % 3 == 0}
print(b)
# {0: True, 3: False, 6: True, 9: False}

4.4 Verständnis einstellen

{ expr for value in collection [if condition] }

【Beispiel】

c = {
    
    i for i in [1, 2, 3, 4, 5, 5, 6, 4, 3, 2, 1]}
print(c)
# {1, 2, 3, 4, 5, 6}

Übungsfragen :
1. Schreiben Sie ein Python-Programm, um Zahlen zu finden, die durch 7 und 5 zwischen 1500 und 2700 teilbar sind.

# your code here 
[i for i in range(1500,2700,1) if i%7 == 0 and i%5 == 0]

2. Das Schildkröten- und das Hasenrennspiel
Titelbeschreibung:
Angenommen, es gibt alle Arten von Kaninchen und Schildkröten auf dieser Welt, aber Untersuchungen haben ergeben, dass alle Kaninchen und Schildkröten ein gemeinsames Merkmal haben - sie rennen gern. Infolgedessen finden ständig Schildkröten- und Hasenrennen in allen Ecken der Welt statt. Xiaohua ist sehr daran interessiert und beschließt, die Rassen zwischen verschiedenen Hasen und Schildkröten zu untersuchen. Er stellte fest, dass Kaninchen zwar schneller laufen als Schildkröten, aber ein bekanntes Problem haben - stolz und faul. Wenn die Kaninchen in einem Spiel mit Schildkröten nach jeder Sekunde vor t Metern oder mehr stehen, werden sie anhalten. Ruhe für s Sekunden. Bei verschiedenen Kaninchen sind die Werte von t und s unterschiedlich, aber alle Schildkröten sind gleich - sie hören nie auf, wenn sie das Ende erreichen.
Einige Spiele sind jedoch ziemlich lang und der gesamte Betrachtungsprozess wird viel Zeit in Anspruch nehmen. Xiaohua stellte fest, dass die Schildkröte die Geschwindigkeit v1 (was bedeutet, dass das Kaninchen v1 Meter pro Sekunde laufen kann), solange die Daten des Kaninchens und der Schildkröte nach jedem Spielstart aufgezeichnet werden Die Geschwindigkeit v2 und die dem Kaninchen entsprechenden t- und s-Werte sowie die Länge der Strecke l-können das Ergebnis des Rennens vorhersagen. Aber Xiaohua ist faul und möchte keine manuellen Berechnungen verwenden, um auf die Ergebnisse des Spiels zu schließen. Deshalb hat er Sie - einen talentierten Studenten des Instituts für Informatik der Tsinghua-Universität - um Hilfe gebeten. Bitte schreiben Sie ein Programm. Für die Eingabedaten v1 eines Spiels v2, t, s, l, sagen das Ergebnis des Spiels voraus.
Eingabe:
Es gibt nur eine Eingabezeile, einschließlich fünf durch Leerzeichen getrennten positiven ganzen Zahlen v1, v2, t, s, l, wobei (v1, v2 <= 100; t <= 300; s <= 10; l <= 10000 und Es ist das gemeinsame Vielfache von v1, v2.)
Ausgabe: Die
Ausgabe enthält zwei Zeilen, die erste Zeile gibt das Ergebnis des Spiels aus - einen Großbuchstaben "T" oder "R" bzw. "D", der angibt, dass die Schildkröte gewinnt, das Kaninchen gewinnt oder beide zur gleichen Zeit ankommen Ende.
Die zweite Zeile gibt eine positive Ganzzahl aus, die die Zeit (in Sekunden) angibt, die der Gewinner (oder beide Seiten) benötigt, um den Endpunkt zu erreichen.


Probeneingabe:
10 5 5 2 20
Probenausgabe
D

4

# your code here 
class Turtle_rabbit:
    def run(self,inputs):
        v1,v2,t,s,l = inputs
        result = []
        dist1,dist2 = 0, 0
        i = 0
        while dist1 < l and dist2 < l:
            dist1 += v1
            dist2 += v2
            i +=1
            if(dist1 == l or dist2 == l):
                break
            if(dist1 - dist2 >= t):
                dist1 -= s*v1    
                            
        if dist1 > dist2:
            result.append("R")
        elif dist1 < dist2:
            result.append("T")
        else:
            result.append("D") 
        result.append(i)
        return result
        
if __name__ == "__main__":
    inputs = (10,5,5,2,20)
    result = Turtle_rabbit()
    for i,data in enumerate(result.run(inputs)):
        print(data)

Referenzen :

  • https://www.runoob.com/python3/python3-tutorial.html
  • https://www.bilibili.com/video/av4050443
  • https://mp.weixin.qq.com/s/DZ589xEbOQ2QLtiq8mP1qQ

DataWhale

Datawhale ist eine Open-Source-Organisation, die sich auf Datenwissenschaft und KI konzentriert. Sie bringt herausragende Lernende von vielen Universitäten und bekannten Unternehmen in vielen Bereichen zusammen und bringt eine Gruppe von Teammitgliedern mit Open-Source- und Erkundungsgeist zusammen. Mit der Vision "Für den Lernenden, wachsen Sie mit den Lernenden" fördert Datawhale echte Selbstdarstellung, Offenheit und Toleranz, gegenseitiges Vertrauen und gegenseitige Unterstützung, den Mut, Fehler zu versuchen und den Mut, Verantwortung zu übernehmen. Gleichzeitig nutzt Datawhale das Konzept von Open Source, um Open Source-Inhalte, Open Source-Lernen und Open Source-Lösungen zu untersuchen, Talenttraining zu fördern, das Talentwachstum zu fördern und eine Verbindung zwischen Menschen, Menschen und Wissen, Menschen und Unternehmen sowie Menschen und der Zukunft herzustellen.

Ich denke du magst

Origin blog.csdn.net/OuDiShenmiss/article/details/107533168
Empfohlen
Rangfolge