Bagaimana untuk menjalankan baris kod beberapa kali berdasarkan input?

王林
Lepaskan: 2024-02-22 13:30:12
ke hadapan
895 orang telah melayarinya

Bagaimana untuk menjalankan baris kod beberapa kali berdasarkan input?

Kandungan soalan

Menggunakan python, saya cuba mencari cara yang lebih pantas untuk menjalankan randint beberapa kali berdasarkan input tanpa perlu menulis kemungkinan setiap input. Ini adalah penggelek dadu untuk permainan meja. Kodnya adalah seperti berikut

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?")
Salin selepas log masuk

Saya terus menambah jenis dadu yang lain. Pada asasnya saya mahu dapat meletakkan 100 sebagai input dan berikan saya 100 randit tanpa perlu kod secara manual sehingga if i2=="100" tetapi masih menyimpan "ifs" yang berbeza. Saya juga ingin mencetak jumlah nilai yang ditatal

Untuk bahagian kedua, saya cuba print(jumlah(nilai1,nilai2)) tetapi memandangkan nilai1 dan nilai2 bukan integer, saya mendapat ralat


Jawapan betul


Jika saya faham dengan betul, anda ingin memudahkan operasi algoritma tersebut.

Kod saya berfungsi seperti berikut.

Pengguna memasukkan jenis dadu (cth. "d6", "d10") dan bilangan balingan. Program ini menyemak bahawa dadu yang dimasukkan adalah dari jenis yang betul (bermula dengan "d" dan mempunyai bilangan sisi yang positif).

Jika data adalah betul, program akan menjana bilangan lontaran yang diberikan menggunakan dadu yang diberikan, menyimpan keputusan ke senarai nilai dan mencetaknya.

Atur cara mengira jumlah hasil yang diperoleh dan mencetaknya.

Program ini bertanya kepada pengguna jika mereka ingin meneruskan lontaran yang lain.

Jika pengguna memutuskan untuk menggulung semula, program akan mengulangi proses menjana dan mencetak hasilnya.

Jika pengguna memasukkan data yang salah (contohnya, dadu dalam format yang salah atau bilangan gulungan kurang daripada 1), program akan mencetak mesej ralat.

Saya andaikan anda akan mengubah suai kod ini mengikut keperluan anda

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.")
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk menjalankan baris kod beberapa kali berdasarkan input?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!