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

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

王林
Freigeben: 2024-02-22 13:30:12
nach vorne
964 Leute haben es durchsucht

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?")
Nach dem Login kopieren

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.")
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage