Un producto seco de Python al día: "Conceptos básicos de automatización": Declaración de juicio condicional

Juicio condicional

La razón por la que una computadora puede realizar muchas tareas automatizadas es que puede hacer juicios condicionales por sí misma. PAGS

Por ejemplo, ingrese la edad del usuario e imprima contenido diferente según la edad. En el programa Python, use la instrucción if para lograr:

age = 20if age >= 18: print('your age is', age) print('adult')

De acuerdo con las reglas de sangría de Python, si la sentencia if se considera verdadera, se ejecutan las dos sentencias de impresión sangradas; de lo contrario, no se hace nada.

También puede agregar una instrucción else al if, lo que significa que si el juicio if es False, no ejecute el contenido del if y ejecute el else:

age = 3if age >= 18: print('your age is', age) print('adult')
else: print('your age is', age) print('teenager')

Tenga cuidado de no omitir los dos puntos :.

Por supuesto, el juicio anterior es muy aproximado, puede usar elif para hacer un juicio más detallado:

age = 3if age >= 18: print('adult')elif age >= 6: print('teenager')else: print('kid')

elif是else if的缩写,完全可以有多个elif,所以if语句的完整形式就是:

if <条件判断1>: <执行1>elif <条件判断2>: <执行2>elif <条件判断3>: <执行3>else: <执行4>

La ejecución de la sentencia if tiene una característica, se juzga de arriba a abajo. Si una sentencia determinada es Verdadera, después de ejecutar la sentencia correspondiente a la sentencia, el resto elif y else se ignoran, así que pruebe y explique por qué El siguiente programa huellas dactilares

teenager:
age = 20if age >= 6: print('teenager')elif age >= 18: print('adult')else: print('kid')

La condición de juicio if también se puede abreviar, como escribir:

if x: print('True')

Siempre que x sea un valor distinto de cero, una cadena no vacía, una lista no vacía, etc., se juzga como Verdadero; de lo contrario, es Falso.

input

Finalmente, observe un juicio condicional problemático. Muchos estudiantes usarán input () para leer la entrada del usuario, de modo que puedan ingresar por sí mismos, y el programa se ejecutará de manera más interesante:

birth = input('birth: ')if birth < 2000: print('00前')else: print('00后')

Ingrese 1982, el resultado es un error:

Traceback (most recent call last): File "", line 1, in TypeError: unorderable types: str() > int()

Esto se debe a que el tipo de datos devuelto por input () es str. Str no se puede comparar directamente con un entero. Primero debes convertir str en un entero. Python proporciona la función int () para lograr esto:

s = input('birth: ')birth = int(s)if birth < 2000: print('00前')else: print('00后')

Ejecútelo de nuevo para obtener el resultado correcto. Pero, ¿y si escribe abc? Recibirá otro mensaje de error:

Traceback (most recent call last): File "", line 1, in ValueError: invalid literal for int()
 with base 10: 'abc'

Resulta que la función int () informará un error cuando encuentre que una cadena no es un número válido y el programa se cerrará.

Recomendación: 020 se actualiza continuamente, el pequeño círculo de boutiques tiene contenido nuevo todos los días y la concentración de productos secos es extremadamente alta.
¡Hay todo lo que desea para hacer conexiones y discutir sobre tecnología!
¡Sea el primero en unirse al grupo y superar a sus compañeros! (No hay tarifa para unirse al grupo)
Haga clic aquí para comunicarse y aprender con los desarrolladores de Python.
Número de grupo: 745895701, previa
solicitud:
paquete de instalación del software Python, tutorial de combate real de Python,
colección gratuita de materiales, incluido el aprendizaje básico de Python, aprendizaje avanzado, rastreadores, inteligencia artificial, operación y mantenimiento automatizados, pruebas automatizadas, etc.

ciclo

Para calcular 1 + 2 + 3, podemos escribir directamente la expresión:

>>> 1 + 2 + 36

Para calcular 1 + 2 + 3 +… + 10, apenas puedo escribirlo.

Sin embargo, para calcular 1 + 2 + 3 +… + 10000, es imposible escribir la expresión directamente.

Para que la computadora calcule miles de operaciones repetidas, necesitamos declaraciones de bucle.

para ... en bucle

Hay dos tipos de bucles de Python, uno es para ... en bucles, que iteran sobre cada elemento en una lista o tupla a su vez, vea un ejemplo:

names = ['Michael', 'Bob', 'Tracy']
for name in names: print(name)

La ejecución de este código imprimirá cada elemento de nombres a su vez:

MichaelBobTracy

Entonces, el ciclo for x in… es sustituir cada elemento en la variable x, y luego ejecutar la declaración del bloque con sangría para la salida cada vez. Por ejemplo, si queremos calcular la suma de números enteros del 1 al 10, podemos usar una variable de suma para la acumulación:

sum = 0for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: 
sum = sum + xprint(sum)

Si desea calcular la suma de números enteros del 1 al 100, es un poco difícil escribir del 1 al 100.

Python proporciona una función range (), que puede generar una secuencia de enteros, que puede convertirse en una lista a través de la función list (). Por ejemplo, la secuencia generada por range (5) es un número entero menor que 5 a partir de 0:

>>> list(range(5))[0, 1, 2, 3, 4]

range (101) puede generar una secuencia de números enteros del 0 al 100, que se calcula de la siguiente manera:

El primero:

entrar:

Salida:

El segundo tipo: entrada:

salida:

Preste atención a la sangría, generará diferentes resultados: ingrese:

Salida:

while loop

El segundo tipo de bucle es el bucle while. Mientras se cumpla la condición, continuará el bucle. Cuando no se cumpla la condición, el bucle saldrá y se emitirá el resultado del último bucle.

Por ejemplo, si queremos calcular la suma de todos los números impares dentro de 100, podemos usar un ciclo while:

sum = 0n = 99while n > 0:
sum = sum + n n = n - 2print(sum)

En el ciclo, la variable n continúa disminuyendo hasta que se convierte en -1, la condición while ya no se satisface y el ciclo sale.

entrar:

Salida:

romper

En el ciclo, la sentencia break puede salir del ciclo antes de tiempo y el programa finaliza, pero debe usarse junto con la sentencia if. Por ejemplo, después de imprimir 1 ~ 10, imprimir inmediatamente END, el programa finaliza.

n = 1while n <= 100: if n > 10: # 当n = 11时,条件满足,执行break语句 break 
# break语句会结束当前循环 

print(n) n = n + 1print('END')

continue

En el proceso de bucle, también puede usar la instrucción continue para omitir el bucle actual e iniciar el siguiente bucle directamente, pero debe usarse junto con la instrucción if.

Si queremos imprimir solo números impares entre 1-10, podemos omitir algunos bucles con la instrucción continue:

n = 0while n < 10: n = n + 1 if n % 2 == 0: 
# 如果n是偶数,执行continue语句 continue 
# continue语句会直接继续下一轮循环,后续的print()语句不会执行 print(n)

Al ejecutar el código anterior, puede ver que las impresiones ya no son 1-10, sino 1, 3, 5, 7, 9.

Preste especial atención: No abuse de las declaraciones de break and continue.

dictar, {}

Python tiene un diccionario incorporado: se admite dict. El nombre completo de dict es diccionario, que también se llama mapa en otros idiomas. Utiliza almacenamiento de valores clave y tiene una velocidad de búsqueda extremadamente rápida.

Por ejemplo, suponga que desea encontrar la puntuación correspondiente de acuerdo con el nombre del compañero de clase. Si usa dict para lograrlo, solo necesita una tabla de comparación "nombre" - "puntuación", y puede encontrar la puntuación directamente en función de el nombre. No importa cuán grande sea la tabla, la velocidad de búsqueda no disminuirá. Escribe un dictado en Python de la siguiente manera:

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']95

En este método de almacenamiento de clave-valor, cuando lo ingresa, debe calcular la ubicación de almacenamiento del valor en función de la clave, de modo que pueda obtener el valor directamente en función de la clave cuando lo obtenga.

El método de poner datos en el dict, además de la designación durante la inicialización, también se puede poner en la clave:

>>> d['Adam'] = 67
>>> d['Adam']67

Dado que una clave solo puede corresponder a un valor, si coloca una clave en un valor varias veces, el siguiente valor borrará el valor anterior:

>>> d['Jack'] = 90>>> d['Jack']90>>> d['Jack'] = 88
>>> d['Jack']88
>>> d
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85,'Adam':67,'Jack':88}

Si la clave no existe, dict informará un error:

>>> d['Thomas']Traceback (most recent call last):
File "", line 1, in KeyError: 'Thomas'

Para evitar el error de que la clave no existe, hay dos formas. Una es juzgar si la clave existe por:

>>> 'Thomas' in dFalse

El segundo es a través del método get () proporcionado por dict. Si la clave no existe, puede devolver None o el valor que especifique:

>>> d.get('Thomas')
>>> d.get('Thomas', -1)-1

Nota: El entorno interactivo de Python no muestra el resultado cuando se devuelve None.

Para eliminar una clave, use el método pop (clave), y el valor correspondiente también se eliminará del dict:

>>> d.pop('Bob')75
>>> d{'Michael': 95, 'Tracy': 85}

Es importante señalar que el orden de almacenamiento interno del dict no tiene nada que ver con el orden en que se colocan las claves.

Comparado con list, dict tiene las siguientes características:

La velocidad de búsqueda e inserción es extremadamente rápida y no se ralentizará con el aumento de la clave; ocupa mucha memoria y desperdicia mucha memoria.

Lo contrario de la lista:

El tiempo de búsqueda e inserción aumenta con el aumento de elementos, ocupa poco espacio y desperdicia poca memoria.

Por tanto, dict es una forma de intercambiar espacio por tiempo.

dict se puede utilizar en muchos lugares donde se requiere una búsqueda de alta velocidad. Se encuentra en casi todas partes del código Python. El uso correcto de dict es muy importante. Lo primero que hay que tener en cuenta es que la clave de dict debe ser un objeto inmutable .

Esto se debe a que dict calcula la ubicación de almacenamiento del valor de acuerdo con la clave. Si el resultado de calcular la misma clave cada vez es diferente, el dict es completamente confuso. Este algoritmo para calcular la ubicación por clave se denomina algoritmo hash (Hash).

Para garantizar la exactitud del hash, el objeto clave no se puede cambiar.

En Python, las cadenas, los números enteros, etc.son inmutables, por lo que se pueden usar de forma segura como claves. La lista es variable y no se puede utilizar como clave:

>>> key = [1, 2, 3]
>>> d[key] = 'a list'Traceback (most recent call last): File "", line 1, in TypeError: unhashable type: 'list'

conjunto

Set es similar a dict. También es un conjunto de claves, pero no almacena valor. Dado que la clave no se puede repetir, no hay una clave duplicada en el conjunto.

Para crear un conjunto, debe proporcionar una lista como conjunto de entrada:

>>> s = set([1, 2, 3])
>>> s{1, 2, 3}

Tenga en cuenta que el parámetro entrante [1, 2, 3] es una lista, y el {1, 2, 3} mostrado solo le dice que hay tres elementos de 1, 2 y 3 dentro del conjunto, y el orden de visualización no no indicar El conjunto está ordenado.

Los elementos repetidos se filtran automáticamente en el conjunto:

>>> s = set([1, 1, 2, 2, 3, 3])
>>> s{1, 2, 3}

Puede agregar elementos al conjunto a través del método add (key), y puede agregarlos repetidamente, pero no tendrá ningún efecto:

>>> s.add(4)
>>> s{1, 2, 3, 4}
>>> s.add(4)
>>> s{1, 2, 3, 4}

Los elementos se pueden eliminar mediante el método de eliminación (clave):

>>> s.remove(4)
>>> s{1, 2, 3}

El conjunto se puede considerar como un conjunto de elementos desordenados y no repetitivos en el sentido matemático, por lo que dos conjuntos pueden realizar operaciones como intersección y unión en el sentido matemático:

>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2{2, 3}
>>> s1 | s2{1, 2, 3, 4}

La única diferencia entre set y dict es que el valor correspondiente no se almacena. Sin embargo, el principio de set es el mismo que el de dict. Por lo tanto, los objetos variables no se pueden colocar de la misma manera. Porque es imposible juzgar si dos los objetos variables son iguales, el conjunto no se puede garantizar. "No habrá elementos duplicados" en el interior. Intente poner la lista en el conjunto y vea si informa un error.

Habla de nuevo de objetos inmutables

Como mencionamos anteriormente, str es un objeto inmutable y list es un objeto mutable.

Para objetos mutables, como la lista, si opera en la lista, el contenido de la lista cambiará, como por ejemplo:

>>> a = ['c', 'b', 'a']
>>> a.sort()
>>> a['a', 'b', 'c']

Y para objetos inmutables, como str, realice operaciones en str:

>>> a = 'abc'
>>> a.replace('a', 'A')'Abc'
>>> a'abc'

Aunque la cadena tiene un método replace (), cambia'Abc ', pero la variable a sigue siendo'abc' al final, ¿cómo debemos entenderlo?

Primero cambiemos el código a lo siguiente:

>>> a = 'abc'
>>> b = a.replace('a', 'A')
>>> b'Abc'
>>> a'abc'

¡Siempre tenga en cuenta que a es una variable y 'abc' es un objeto de cadena! A veces, solemos decir que el contenido del objeto a es 'abc', pero de hecho significa que a en sí mismo es una variable y el contenido del objeto al que apunta es 'abc':

┌───┐ ┌───────┐│ a │─────────────────>│ 'abc' │└───┘ └───────┘

Cuando llamamos a a.replace ('a', 'A'), en realidad llamar al método replace funciona en el objeto string 'abc', y aunque este método se llama replace, no cambia el contenido de la cadena 'abc' '. Por el contrario, el método replace crea una nueva cadena 'abc' y regresa. Si usamos la variable b para apuntar a la nueva cadena, es fácil de entender. La variable a todavía apunta a la cadena original 'abc', pero la variable b apunta a New string'Abc ':

┌───┐ ┌───────┐│ a │─────────────────>│ 'abc' │└───┘ 
└───────┘┌───┐ ┌───────┐│ b │─────────────────>│ 'Abc' │└───┘ 
└───────┘

Por lo tanto, para un objeto inmutable, llamar a cualquier método del objeto en sí no cambiará el contenido del objeto en sí. En cambio, estos métodos crean un nuevo objeto y lo devuelven, lo que garantiza que el objeto inmutable en sí mismo sea siempre inmutable.

resumen

Un dictado con una estructura de almacenamiento de clave-valor es muy útil en Python. Es importante elegir un objeto inmutable como clave. La clave más utilizada es una cadena.

Aunque la tupla es un objeto invariante, intente poner (1, 2, 3) y (1, [2, 3]) en un dict o conjunto y explique el resultado.

Supongo que te gusta

Origin blog.csdn.net/Python_xiaobang/article/details/113109221
Recomendado
Clasificación