Jadi saya sangat baru mengenal python dan saya mencoba membuat hal seperti rpg berbasis teks yang melibatkan ruang pertama dengan 2 pintu keluar (kiri atau kanan) dan setiap baris kamar sesudahnya memiliki jumlah bilangan bulat dari jumlah yang terakhir dan setiap variabel adalah bilangan bulat acak dari 0 hingga 3 (jumlah keluar), seperti:

a = [2]
print(a)
import random
b = []
for i in range(0,2):
    x = random.randint(0,3)
    b.append(x)
print(b)
b_sum = sum(b)
import random
c = []
for i in range(0,b_sum):
    x = random.randint(0,3)
    c.append(x)
print(c)
c_sum = sum(c)
import random
d = []
for i in range(0,c_sum):
    x = random.randint(0,3)
    d.append(x)
print(d)
d_sum = sum(d)
import random
e = []
for i in range(0,d_sum):
    x = random.randint(0,3)
    e.append(x)
print(e)
e_sum = sum(e)
import random
f = []
for i in range(0,e_sum):
    x = random.randint(0,3)
    f.append(x)
print(f)
f_sum = sum(f)
import random
g = []
for i in range(0,f_sum):
    x = random.randint(0,3)
    g.append(x)
print(g)

Ini berfungsi dengan baik namun navigasi terbukti sulit.

rowlist = [a,b,c,d,e,f,g,h,ii]
row = (rowlist[0])

room = (a[0])
print(room)
if room == 2:
    door=str(input("left or right"))
    if door == "left":
        roomsum = sum(row[row < room (+1)])

Apa yang saya coba lakukan di sini adalah menemukan jumlah setiap bilangan bulat dalam daftar yang muncul sebelum 'ruangan' saat ini. Tapi saya tidak tahu bagaimana melakukan ini! Bantuan apa pun akan dihargai, terima kasih banyak!

-1
Ted Jinks 24 Maret 2020, 20:22

1 menjawab

Jawaban Terbaik

Sepertinya Anda sedang mencari sesuatu seperti:

import random

big_list = [[2]]

for _ in range(1,5):  # increase to create more "rooms"
    big_list.append( [random.randint(0,3) for _ in range(sum(big_list[-1]))])

total = 0
for inner in big_list:
    print(inner, "before:", total)
    total += sum(inner) 

Untuk menghasilkan daftar seperti:

[2] before: 0
[3, 1] before: 2
[2, 3, 1, 1] before: 6
[1, 1, 2, 0, 2, 2, 2] before: 13
[2, 3, 0, 2, 3, 2, 2, 1, 0, 2] before: 23

Karena keacakan Anda juga mungkin mendapatkan:

[2] before: 0
[0, 1] before: 2
[0] before: 3
[] before: 3
[] before: 3

Jumlah parsial di dalam daftar dapat diperoleh dengan ekspresi generator di dalam sum atau list slicing dan sum:

lol = [[1,2,3], [4,5,6,7,8,9,10,11,12], [13,14,15,16,17]]

idx_in_lol   = 1      # [4,5,6,7,8,9,10,11,12]

idx_in_inner = 5      # [4,5,6,7,8,***9***,10,11,12]

# generator expression and enumerate     
s1 = sum( i if idx < idx_in_inner else 0 for idx,i in enumerate(lol[idx_in_lol]))

# or by slicing
s2 = sum( lol[idx_in_lol][:idx_in_inner] )

print(s1, s2) 

Keluaran:

30 30 #  4+5+6+7+8 = 30
0
Patrick Artner 27 Maret 2020, 15:03