Ejercicios clásicos de Python: tabla de multiplicar nueve-nueve, imprimir rombo, imprimir triángulo opuesto, secuencia de Fibonacci, número primo ...

Aprenda ejercicios sencillos y habrá más y más soluciones para escribir más tarde.

El propósito de la tarea es familiarizar a todos con el lenguaje de programación y ejercitar la conversión de ideas en lógica de programa.

Tabla de multiplicar de nueve y nueve

ayuda (imprimir)

Primero piense si puede imprimir la matriz cuadrada

# 1 falange

# 1 方阵
for i in range(1, 10):
    line = ''
    for j in range(1, 10):
        line += str(i) + '*' + str(j) + '=' + str(i*j) + ' '
    print(line)
print('-' * 30)

# 2 Tabla de multiplicar nueve-nueve

for i in range(1, 10):
    for j in range(1, 10):
        if i >= j:
            print(str(j) + '*' + str(i) + '=' + str(i*j), end=' ')
    print()
print('-' * 30)

# Fusión condicional

for i in range(1, 10):
    for j in range(1, i+1):
         print(str(j) + '*' + str(i) + '=' + str(i*j), end=' ')
    print()
print('-' * 30)

# 3 Alineación de la tabla de multiplicar nueve-nueve

for i in range(1, 10):
    for j in range(1, i+1):
        product = i * j
        product = str(product) + ' ' if j > 1 and product < 10 else str(product)  #这里用表达式(python推荐用)
        print(str(j) + '*' + str(i) + '=' + product, end=' ')
    print()
print('-' * 30)

# 4 Alineación de pestañas de tabla de multiplicar nueve-nueve

for i in range(1, 10):
    for j in range(1, i+1):
        print(str(j) + '*' + str(i) + '=' + str(i*j), end='\t')
    print()
print('-' * 30)

# 5 Utilice el método de formato de cadena

for i in range(1, 10):
    line = ''
    for j in range(1, i+1):
        line += '{0}*{1}={2} '.format(j, i, i*j)
    print(line)
print('-' * 30)

# 5 alinear

for i in range(1, 10):
    line = ''
    for j in range(1, i+1):
        line += '{0}*{1}={2:<2} '.format(j, i, i*j)
    print(line)
print('-' * 30)
  • {2: <2} corresponde a i * j,: <2 dos puntos es el símbolo de división, <significa justificado a la izquierda, 2 significa ancho

# 5 Mejoras de alineación

for i in range(1, 10):
    line = ''
    for j in range(1, i+1):
        product = i * j
        line += '{}*{}={}{}'.format(j, i, product, ' ' if j > 1 and product < 10 else ' ')
    print(line)
print('-' * 30)

# Otra alineación

for i in range(1, 10): # row
    for j in range(1, i+1): # column [1, i+1) 1 <= j <= i
        print("{}*{}={}{}".format(j, i, i*j, ' ' if j==2 and i<5 else ''),
            end='\n' if i == j else ' ')

Preguntas extendidas:

1*1=1  1*2=2  1*3=3  1*4=4  1*5=5  1*6=6  1*7=7  1*8=8  1*9=9
       2*2=4  2*3=6  2*4=8  2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
              3*3=9  3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
                     4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
                            5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
                                   6*6=36 6*7=42 6*8=48 6*9=54
                                          7*7=49 7*8=56 7*9=63
                                                 8*8=64 8*9=72
                                                        9*9=81
请打印成上面的形式

# Imprime la mitad superior de la matriz cuadrada de la tabla de multiplicar nueve-nueve

for i in range(1, 10):
    line = ''
    print(' '*7*(i-1), end='') # 前置空格
    for j in range(i, 10):
        product = i * j
        line += '{}*{}={}{}'.format(i, j, product, ' ' if product < 10 else ' ')
    print(line)

Lo siguiente usa alineación correcta, y la división es pareja

for i in range(1, 10):
    line = ''
    for j in range(i, 10):
        line += '{}*{}={:<{}}'.format(i, j, i * j, 2 if j < 4 else 3)
    print('{:>66}'.format(line))

Imprime el siguiente diamante

   *
  ***
 *****
*******
 *****
  ***
   *

Ideas:

¿Ves el patrón?

for i in range(-3,4):
    if i<0:
        prespace = -i
    else:
        prespace = i
    print(' '*prespace + '*'*(7-prespace*2))

Cambie la instrucción if para que parezca una expresión ternaria, también puede usar abs (), función de valor absoluto incorporada

for i in range(-3, 4):
    print(' ' * abs(i) + '*' * (7 - 2 * abs(i)))

Impresión central

for i in range(-3, 4):
    print("{:^7}".format('*'*(7-2*abs(i))))

Por supuesto, el diamante también se puede imprimir en el centro, hágalo usted mismo

Rayo de impresión

    *
   **
  ***
********
    ***
    **
    *

analizar de la siguiente manera:

行号  *个数  前空格  后空格数  总空格数  数据
1       1      3        3         6       -3
2       2      2        3         5       -2
3       3      1        3         4       -1
4       7      0        0         0        0
5       3      3        1         4        1
6       2      3        2         5        2
7       1      3        3         6        3

Código:

for i in range(-3, 4):
    if i < 0:
        print(' ' * (-i) + '*' * (4 + i))
    elif i > 0:
        print(' ' * 3 + '*' * (4 - i))
    else:
        print('*' * 7)

#延时扩展
n = 9
e = n // 2
x = n - e

for i in range(-e, x):
    if i < 0:
         print(' ' * -i + (x + i) * '*')
    elif i > 0:
         print(' ' * e + (x - i) * '*')
    else: # i == 0
         print('*' * n)

Secuencia de Fibonacci, dentro de 100

Secuencia de Fibonacci-wikiwand

Secuencia de Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...

Si F (n) es el n-ésimo elemento de la secuencia (n∈N *), entonces esta oración se puede escribir de la siguiente manera: F (n) = F (n-1) + F (n-2)

F (0) = 0 , F (1) = 1, F (n) = F (n-1) + F (n-2)

Esta es una secuencia de recurrencia lineal

print(0)
print(1)
a = 0
b = 1

while True :
    c = a + b
    if c > 100 : break
    a = b
    b = c
    print(c)

Encuentra el término 101 de la secuencia de Fibonacci

a = 1
b = 1
print('index={}, fib={}'.format(0, 0))
print('index={}, fib={}'.format(1, a))
print('index={}, fib={}'.format(2, b))
index = 2

while True:
    c = a + b
    index += 1
    print('index={}, fib={}'.format(index, c))
    if index == 101: break
    a = b
    b = c

# index=101, fib=573147844013817084101

Encuentra todos los números primos dentro de 100,000

El propósito de esta pregunta es llamar la atención sobre cuestiones de eficiencia.

for x in range(2,100):
    for i in range(2,x):
        if x % i == 0:
            break
        else:
            print(x)

Por qué "la mitad" de un número es suficiente

for x in range(2,100000):
    for i in range(2,int(x ** 0.5)+1):
         if x % i == 0:
             break
         else:
             print(x)

El siguiente código es un código de error, prueba con x = 4, porque el bucle interno carece de 2, entonces hay un problema con el número par

for x in range(2,100000):
    for i in range(3,int(x ** 0.5)+1,2):
        if x % i == 0:
            break
        else:
            print(x)

cambie a

for x in range(3,100000,2): # 舍弃掉所有偶数
    for i in range(3, int(x ** 0.5) + 1, 2): # 为什么从3开始,且step为2?
        if x % i == 0:
            break
        else:
            print(x)

¿Por qué empezar desde 3 y el paso es 2?

Como no hay un número par, no es necesario el módulo 2.

¿Pueden los números pares impares dividirse uniformemente?

Utilice las propiedades de los números primos: entre todos los números primos mayores que 10, los dígitos de un solo dígito son solo 1,3,7,9.

count = 1
for x in range(3, 100000, 2): # 舍弃掉所有偶数
    if x > 10 and x % 10 == 5: # 所有大于10的质数中,个位数只有1,3,7,9。意思就是大于5,结尾是5就能被5整除了
        continue
    for i in range(3, int(x ** 0.5) + 1, 2):
        if x % i == 0:
            break
        else:
            count += 1
            print(x, count) # 9592

Cómo calcular la hora, importar fecha y hora

count = 0
for x in range(2,100000):
    for i in range(2,x):
         if x % i == 0:
             break
         else:
             count += 1
print(count)
# 9592
count = 0
for x in range(2,100000):
    for i in range(2,int(x ** 0.5)+1):
         if x % i == 0:
             break
         else:
             count += 1
print(count)
# 9592

En el campo de la criptografía, se utilizan números primos grandes.

# El código completo de la comparación de los dos algoritmos

import datetime

upper_limit = 100000
delta = [0,0]
counts = [0,0]

start = datetime.datetime.now()
for _ in range(10):
    counts[0] = 0
    for x in range(2,upper_limit):
        for i in range(2,int(x ** 0.5)+1):
            if x % i == 0:
                break
        else:
            #print(x)
            counts[0] += 1
delta[0] = (datetime.datetime.now() - start).total_seconds()

start = datetime.datetime.now()
for _ in range(10):
    counts[1] = 1
    #print(2)
    for x in range(3,upper_limit,2):
        for i in range(3,int(x ** 0.5)+1,2):
            if x % i == 0:
                break
            else:
                #print(x)
                counts[1] += 1
delta[1] = (datetime.datetime.now() - start).total_seconds()

print(delta, sep="\t")
print(counts, sep="\t")

Estimado, necesito su "compartir" y "mirar"

Comenzando con TI Gracias por su atención

Banco de preguntas del programador →

La lista de palabras para programadores →

Dirección de práctica: www.520mg.com/it

Supongo que te gusta

Origin blog.csdn.net/bigzql/article/details/109665291
Recomendado
Clasificación