Python: ramificação do programa, uso de estrutura de loop

Todos têm uma compreensão perceptiva das estruturas de ramificação e loop em Python. A importância da estrutura de ramificação e loop é evidente, é a base para a construção da lógica do programa e também é uma parte relativamente difícil para iniciantes. A maioria dos iniciantes pode entender seu propósito e uso depois de aprender as estruturas de ramificação e loop, mas não pode começar ao encontrar problemas práticos;

É fácil entender o código de outras pessoas, mas é muito difícil escrever o mesmo código você mesmo. Se você tiver o mesmo problema e confusão, não fique deprimido, é só porque você acabou de começar sua jornada de programação e seu volume de prática ainda não atingiu o nível que permite que você escreva código como quiser, desde que você fortalecer sua prática de programação, esse problema mais cedo ou mais tarde vai funcionar. A seguir explicaremos alguns casos clássicos para você.

Estojo pequeno clássico

Exemplo 1: Encontrando o número de narcisos.

Explicação: O número de Narciso também é conhecido como número invariante de número supercompleto, número narcisista, número de autopoder, número de Armstrong, é um número de 3 dígitos e a soma dos cubos dos números em cada dígito do número é exatamente igual a si mesmo, por exemplo:

A chave para este tópico é dividir um número de três dígitos em unidades, dezenas e centenas. Isso é realmente muito fácil de fazer usando os operadores // (divisão) e % (módulo) em Python. O código é o seguinte Mostrar.

"""
找出所有水仙花数
"""
for num in range(100, 1000):
    low = num % 10
    mid = num // 10 % 10
    high = num // 100
    if num == low ** 3 + mid ** 3 + high ** 3:
        print(num)

O truque acima de usar // e % para dividir um número ainda é muito usado ao escrever código. Queremos inverter um inteiro positivo que não sabe quantos dígitos tem, como por exemplo mudar 12345 para 54321, que também pode ser realizado usando essas duas operações, o código é o seguinte.

"""
正整数的反转
"""
num = int(input('num = '))
reversed_num = 0
while num > 0:
    reversed_num = reversed_num * 10 + num % 10
    num //= 10
print(reversed_num)

Exemplo 2: Problema com centenas de dinheiro e cem galinhas.

Explicação: Cem moedas e cem galinhas é um problema matemático proposto por Zhang Qiujian, um antigo matemático do meu país, no livro "Suan Jing": uma galinha vale cinco, uma galinha vale três e três galinhas valem um. Se você comprar cem galinhas por cem dólares, quanto custará o galo, a galinha mãe e os pintinhos? Traduzido para a linguagem moderna é: 5 yuans por um galo, 3 yuans por uma galinha e 3 pintinhos por 1 yuan.Se você comprar 100 galinhas por 100 yuans, quantos galos, galinhas e pintinhos existem?

"""
《百钱百鸡》问题
"""
# 假设公鸡的数量为x,x的取值范围是0到20
for x in range(0, 21):
    # 假设母鸡的数量为y,y的取值范围是0到33
    for y in range(0, 34):
        z = 100 - x - y
        if 5 * x + 3 * y + z // 3 == 100 and z % 3 == 0:
            print(f'公鸡: {x}只, 母鸡: {y}只, 小鸡: {z}只')

O método usado acima é chamado de método exaustivo, também conhecido como método de busca violenta. Esse método enumera todos os candidatos possíveis na solução alternativa um a um e verifica se cada candidato corresponde à descrição do problema e, finalmente, obtém a solução para o problema . Essa abordagem pode parecer desajeitada, mas geralmente é uma opção viável ou até boa para computadores muito poderosos que podem encontrar uma solução para um problema enquanto ele existir.

Exemplo 3: jogo CRAPS.

Descrição: CRAPS, também conhecido como craps, é um jogo de mesa muito popular em Las Vegas, EUA. O jogo usa dois dados, e o jogador ganha pontos agitando os dois dados para jogar. As regras simplificadas são: se o jogador lançar o dado pela primeira vez e obtiver 7 ou 11 pontos, o jogador ganha; se o jogador lançar 2 pontos, 3 pontos ou 12 pontos pela primeira vez, o dealer ganha; se o jogador rola outros pontos Em seguida, o jogador continua a lançar os dados, se o jogador rolar 7 pontos, o banqueiro ganha; se o jogador rolar o primeiro número de pontos, o jogador ganha; os jogadores com outros pontos continuam a rolar os dados até o vencedor é determinado.

"""
Craps游戏
我们设定游戏开始时玩家有1000元
游戏结束的条件是玩家破产(输光所有的)
"""
from random import randint

money = 1000
while money > 0:
    print(f'你的总资产为: {money}元')
    go_on = False
    # 下注金额必须大于0小于等于玩家总资产
    while True:
        debt = int(input('请下注: '))
        if 0 < debt <= money:
            break
    # 第一次摇色子
    # 用1到6均匀分布的随机数模拟摇色子得到的点数
    first = randint(1, 6) + randint(1, 6)
    print(f'\n玩家摇出了{first}点')
    if first == 7 or first == 11:
        print('玩家胜!\n')
        money += debt
    elif first == 2 or first == 3 or first == 12:
        print('庄家胜!\n')
        money -= debt
    else:
        go_on = True
    # 第一次摇色子没有分出胜负游戏继续
    while go_on:
        go_on = False
        current = randint(1, 6) + randint(1, 6)
        print(f'玩家摇出了{current}点')
        if current == 7:
            print('庄家胜!\n')
            money -= debt
        elif current == first:
            print('玩家胜!\n')
            money += debt
        else:
            go_on = True
print('你破产了, 游戏结束!')

Exemplo 4: Sequência de Fibonacci.

Explicação: A sequência de Fibonacci (sequência de Fibonacci), também conhecida como sequência da seção áurea, é uma condição de hipótese ideal estudada pelo matemático italiano Leonardo Fibonacci (Leonardoda Fibonacci) em "O Livro do Cálculo". A sequência introduzida pelo problema da taxa de crescimento do coelho, então esta sequência é freqüentemente chamada de "sequência do coelho". A característica da sequência de Fibonacci é que os dois primeiros números da sequência são 1 e, a partir do terceiro número, cada número é a soma dos dois números anteriores. De acordo com esta regra, os 10 primeiros números da sequência de Fibonacci números são: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55. A sequência de Fibonacci tem aplicações diretas na física moderna, estrutura quase cristalina, química e outros campos.

"""
输出斐波那契数列前20个数
"""
# 前两个数都是1
a, b = 1, 1
print(a, b, end=' ')
# 通过递推公式算出后面的18个数
for _ in range(18):
    a, b = b, a + b
    print(b, end=' ')

Exemplo 5: Imprimir números primos.

Explicação: Um número primo refere-se a um inteiro positivo (excluindo 1) que só pode ser divisível por 1 e por si mesmo.

"""
输出100以内的素数
"""
for num in range(2, 100):
    # 假设num是素数
    is_prime = True
    # 在2到num-1之间找num的因子
    for factor in range(2, num):
        # 如果找到了num的因子,num就不是素数
        if num % factor == 0:
            is_prime = False
            break
    # 如果布尔值为True在num是素数
    if is_prime:
        print(num)

O resumo simples ainda é a mesma frase: estrutura de ramificação e estrutura de loop são muito importantes, são a base da construção da lógica do programa e muita prática deve ser feita para alcançar o domínio. O exemplo do jogo CRAPS que acabamos de mencionar pode ser usado como padrão.Se você conseguir concluir este código com sucesso, terá dominado o conhecimento das estruturas de ramificação e loop.

Acho que você gosta

Origin blog.csdn.net/y1282037271/article/details/129241796
Recomendado
Clasificación