Comment exécuter une ligne de code plusieurs fois en fonction de la saisie ?

王林
Libérer: 2024-02-22 13:30:12
avant
935 Les gens l'ont consulté

Comment exécuter une ligne de code plusieurs fois en fonction de la saisie ?

Contenu de la question

En utilisant Python, j'essaie de trouver un moyen plus rapide d'exécuter randint plusieurs fois en fonction de l'entrée sans avoir à écrire la probabilité de chaque entrée. Il s'agit d'un rouleau de dés pour les jeux de table. Le code est le suivant

import random
from random import randint

i1=input("what type of die?: ")
i2=input("how many times?:")

roll_again = "yes"
while roll_again == "yes" or roll_again == "y":
    
    if i1=="d6":
        if i2=="1":
            value1=randint(1,6)
            print(value1)
            roll_again = input("roll again?")
        if i2=="2":
            value1=randint(1,6)
            value2=randint(1,6)
            print(value1,value2)
            roll_again = input("roll again?")
        if i2=="3":
            value1=randint(1,6)
            value2=randint(1,6)
            value3=randint(1,6)
            print(value1,value2,value3)
            roll_again = input("roll again?")
        if i2=="4":
            value1=randint(1,6)
            value2=randint(1,6)
            value3=randint(1,6)
            value4=randint(1,6)
            print(value1,value2,value3,value4)
            roll_again = input("roll again?")
    
    elif i1=="d4":
        if i2=="1":
            value1=randint(1,4)
            print(value1)
            roll_again = input("roll again?")
        if i2=="2":
            value1=randint(1,4)
            value2=randint(1,4)
            print(value1,value2)
            roll_again = input("roll again?")
        if i2=="3":
            value1=randint(1,4)
            value2=randint(1,4)
            value3=randint(1,4)
            print(value1,value2,value3)
            roll_again = input("roll again?")
        if i2=="4":
            value1=randint(1,4)
            value2=randint(1,4)
            value3=randint(1,4)
            value4=randint(1,4)
            print(value1,value2,value3,value4)
            roll_again = input("roll again?")
Copier après la connexion

Je continue d'ajouter d'autres types de dés. Fondamentalement, je veux pouvoir mettre 100 en entrée et lui donner 100 randint sans avoir à coder manuellement jusqu'à ce que if i2=="100" mais conserver les différents "if". Je souhaite aussi imprimer la somme des valeurs défilées

Pour la deuxième partie, j'ai essayé print(sum(value1,value2)) mais comme value1 et value2 ne sont pas des entiers, j'ai eu l'erreur


Bonne réponse


Si je comprends bien, vous souhaitez simplifier le fonctionnement de l'algorithme.

Mon code fonctionne comme suit.

L'utilisateur saisit le type de dé (par exemple "d6", "d10") et le nombre de lancers. Le programme vérifie que le dé saisi est du bon type (commence par "d" et a un nombre de faces positif).

Si les données sont correctes, le programme générera le nombre de lancers donné à l'aide des dés donnés, enregistrera les résultats dans une liste de valeurs et les imprimera.

Le programme calcule la somme des résultats obtenus et l'imprime.

Le programme demande à l'utilisateur s'il souhaite continuer avec un autre lancer.

Si l'utilisateur décide de relancer, le programme répétera le processus de génération et d'impression du résultat.

Si l'utilisateur saisit des données incorrectes (par exemple, les dés sont dans le mauvais format ou le nombre de lancers est inférieur à 1), le programme imprimera un message d'erreur.

Je suppose que vous modifierez ce code en fonction de vos besoins

from random import randint

i1 = input("Enter the type of dice (e.g., d6, d4): ")
i2 = int(input("Enter the number of dice rolls: "))

if i1.startswith("d") and i2 > 0:
    dice_type = int(i1[1:])
    values = []

    for _ in range(i2):
        values.append(randint(1, dice_type))

    print(*values)
    print("Sum:", sum(values))
    roll_again = input("Roll again? (yes/no): ").lower()

    while roll_again == "yes":
        values = []

        for _ in range(i2):
            values.append(randint(1, dice_type))

        print(*values)
        print("Sum:", sum(values))
        roll_again = input("Roll again? (yes/no): ").lower()

else:
    print("Invalid input. Please enter a valid dice type and number of rolls.")
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal