Heim  >  Artikel  >  Backend-Entwicklung  >  Wie führe ich eine Codezeile basierend auf der Eingabe mehrmals aus?

Wie führe ich eine Codezeile basierend auf der Eingabe mehrmals aus?

王林
王林nach vorne
2024-02-22 13:30:12919Durchsuche

Wie führe ich eine Codezeile basierend auf der Eingabe mehrmals aus?

Frageninhalt

Mit Python versuche ich, einen schnelleren Weg zu finden, Randint basierend auf der Eingabe mehrmals auszuführen, ohne die Wahrscheinlichkeit jeder Eingabe aufschreiben zu müssen. Dies ist ein Würfelroller für Tischspiele. Der Code lautet wie folgt

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?")

Ich füge weiterhin weitere Würfeltypen hinzu. Grundsätzlich möchte ich in der Lage sein, 100 als Eingabe einzugeben und 100 Randint zu erhalten, ohne manuell codieren zu müssen, bis i2=="100" ist, aber trotzdem die verschiedenen „Wenns“ beizubehalten. Ich möchte auch die Summe der gescrollten Werte ausdrucken

Für den zweiten Teil habe ich print(sum(value1,value2)) ausprobiert, aber da value1 und value2 keine ganzen Zahlen sind, erhalte ich die Fehlermeldung


Richtige Antwort


Wenn ich das richtig verstehe, möchten Sie die Bedienung von vereinfachen der Algorithmus.

Mein Code funktioniert wie folgt.

Der Benutzer gibt die Art des Würfels (z. B. „W6“, „W10“) und die Anzahl der Würfe ein. Das Programm prüft, ob der eingegebene Würfel vom richtigen Typ ist (beginnt mit „d“ und hat eine positive Seitenzahl).

Wenn die Daten korrekt sind, generiert das Programm die angegebene Anzahl an Würfen mit den angegebenen Würfeln, speichert die Ergebnisse in einer Werteliste und druckt sie aus.

Das Programm berechnet die Summe der erhaltenen Ergebnisse und druckt sie aus.

Das Programm fragt den Benutzer, ob er mit einem weiteren Wurf fortfahren möchte.

Wenn sich der Benutzer dazu entschließt, erneut zu würfeln, wiederholt das Programm den Vorgang des Generierens und Druckens des Ergebnisses.

Wenn der Benutzer falsche Daten eingibt (z. B. weil die Würfel das falsche Format haben oder die Anzahl der Würfel kleiner als 1 ist), gibt das Programm eine Fehlermeldung aus.

Ich gehe davon aus, dass Sie diesen Code an Ihre Bedürfnisse anpassen werden

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.")

Das obige ist der detaillierte Inhalt vonWie führe ich eine Codezeile basierend auf der Eingabe mehrmals aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen