मुझे लगता है कि यह बहुत सीधे आगे और कोड पढ़ने में आसान है लेकिन मैं सोच रहा था कि इसे लिखने का कोई आसान या अधिक कुशल तरीका है या नहीं। यह मेरे पहले प्रोजेक्ट की शुरुआत है।

import random

command = "".lower()

def dice():
    while True:
        dice_entry = input(":> ").lower().strip()
        if dice_entry == "help":
            print("""
Valid commands include:
Coin, d4, d6, d8, d10, d12 or d20
in order to roll the corresponding dice
or flip a coin.

Type Quit to close program.""")

        elif dice_entry == "coin":
            print("".join(random.choices(['Heads', 'Tails'])))

        elif dice_entry == "d4":
            print(random.randint(1, 4))

        elif dice_entry == "d6":
            print(random.randint(1, 6))

        elif dice_entry == "d8":
            print(random.randint(1, 8))

        elif dice_entry == "d10":
            print(random.randint(1, 10))

        elif dice_entry == "d12":
            print(random.randint(1, 12))

        elif dice_entry == "d20":
            print(random.randint(1, 20))

        elif dice_entry == "quit":
            break
        else:
            print("Invalid command. Type \"Help\" for list of valid commands.")
0
Joshua B. Curtis 12 जून 2019, 11:34

2 जवाब

सबसे बढ़िया उत्तर

ज़रूर वहाँ है:

चरों का नामकरण : आपके चर dice_entry का नाम खराब है। आप एक सिक्का भी फेंक सकते हैं, या छोड़ सकते हैं, या मदद टाइप कर सकते हैं जिसका पासा से कोई लेना-देना नहीं है।

random.choices का उपयोग: आप इसके बजाय random.choice का उपयोग कर सकते हैं और "".join का उपयोग करने से बच सकते हैं

WET : कुछ कोड को कई बार दोहराया जाता है और आप इसके लिए एक फ़ंक्शन का उपयोग कर सकते हैं।

बेकार कोड: कमांड वेरिएबल का बिंदु क्या है? विशेष रूप से "".lower() का क्या मतलब है? सिर्फ "" ही क्यों नहीं

import random

def throw_dice(nb_faces):
    return random.randint(1, nb_faces)

def throw_coin():
    return random.choice(['Heads', 'Tails'])

def main():
    while True:
        entry = input(":> ").lower().strip()

        if entry == "help":
            print("""
Valid commands include:
Coin, d4, d6, d8, d10, d12 or d20
in order to roll the corresponding dice
or flip a coin.

Type Quit to close program.""")

        elif entry == "coin":
            print(throw_coin())

        elif entry in ["d4", "d6", "d8", "d10", "d12", "d20"]:
            nb_faces = int(entry[1:])
            print(throw_dice(nb_faces))

        elif entry == "quit":
            break

        else:
            print('Invalid command. Type "Help" for list of valid commands.')
2
Corentin Limier 12 जून 2019, 08:52

एड्रेसिंग डिक्शनरी का उपयोग करने का एक विकल्प होगा:

import random

def dice():
    help_message = (
        "Valid commands include:\n"
        "Coin, d4, d6, d8, d10, d12 or d20 in order to roll the corresponding dice or flip a coin.\n"
        "Type Quit to close program.\n"
    )
    commands_dict = {
        "help": lambda: help_message,
        "coin": lambda: random.choice(("Heads", "Tails")),
        "d4"  : lambda: random.randint(1,  4),
        "d8"  : lambda: random.randint(1,  8),
        "d10" : lambda: random.randint(1, 10),
        "d12" : lambda: random.randint(1, 12),
        "d20" : lambda: random.randint(1, 20)
    }
    default = lambda: "Invalid command. Type \"Help\" for list of valid commands."
    while True:
        dice_entry = input(":> ").lower().strip()
        if dice_entry == "quit":
            break
        print(commands_dict.get(dice_entry, default)())

यहां आपके पास लाइव उदाहरण है

2
Netwave 12 जून 2019, 11:17