Döngüde Tuple'ın index değerleri için if - else ile ayrı ayrı toplam nasıl aldırılır

Merhaba umarım konu başlığında soruyu doğru ifade edebilmişimdir. Sorunum

for x, y in results.items(): döngüsünün her dönüşünde y’nin sağladığı koşula göre

Tuple’in x[0] yada x[1] deki stringe(Takıma) puan vermek. Düşünce yapım doğruysa bu sonuca nasıl ulaşabilirim. Yardımlarınız için teşekkürler.

def balcomb2i(n):
	for i in range(n):
		for j in range(i+1, n):
			if j - i <= n // 2:
				yield i, j
			else:
				yield j, i

def balcomb2(xs):
	return list(map(lambda c: (xs[c[0]], xs[c[1]]), balcomb2i(len(xs))))


teams = [
	"Galatasaray", "Real Madrid", "Manchester United", "Bayern Munich", "Juventus"
]
#print("\n".join(map(str, sorted(balcomb2(teams)))))
print()
print(f'{"Champions Ligue Matches 2020-2021":-^100}')
for match in (balcomb2(teams)):
	print(*match, sep=" - ")

macListesi = balcomb2(teams)
print(f'{"Match Results":-^100}')

results = {}
for match, result in balcomb2(teams):
	home = random.randint(0, 6)
	away = random.randint(0, 6)
	results[match, result] = home  , away
# for match, result in results.items():
#   	print(f'{(match)} \n{(result)}')

GalatasarayTotalPoint = 0
Real_MadridTotalPoint = 0
Manchester_UnitedTotalPoint = 0
Bayern_MunichTotalPoint = 0
JuventusTotalPoint = 0

for x, y in results.items():
	
	# if y[0] > y[1]:
	# 	x[0] += 3
	# elif y[0] < y[1]:
	# 	x[1] += 3
	# else:
	# 	x[0] += 1
	# 	x[1] += 1

	print(f"{x[0]} : {y[0]} , {x[1]} : {y[1]}")
	print(GalatasarayTotalPoint)

print(f'{"Standings":-^100}')

```python
1 Beğeni

Her takım için ayrı bir değişken kullanmak yerine bir tane sözlük kullanın.

1 Beğeni

@EkremDincel Sözlüğü oluşturdum ama döngüden gelen value değerlerini çekip toplatamadım.

def balcomb2i(n):
	for i in range(n):
		for j in range(i+1, n):
			if j - i <= n // 2:
				yield i, j
			else:
				yield j, i

def balcomb2(xs):
	return list(map(lambda c: (xs[c[0]], xs[c[1]]), balcomb2i(len(xs))))


teams = [
	"Galatasaray", "Real Madrid", "Manchester United", "Bayern Munich", "Juventus"
]
#print("\n".join(map(str, sorted(balcomb2(teams)))))
print()
print(f'{"Champions Ligue Matches 2020-2021":-^100}')
for match in (balcomb2(teams)):
	print(*match, sep=" - ")

macListesi = balcomb2(teams)
print(f'{"Match Results":-^100}')

results = {}
for match, result in balcomb2(teams):
	home = random.randint(0, 6)
	away = random.randint(0, 6)
	results[match, result] = home  , away

for team, score in results.items():
	print(f"{team[0]} : {score[0]} , {team[1]} : {score[1]}")

print(f'{"Standings":-^100}')
teams = tuple(teams)
point = 0
standings = dict.fromkeys(teams, point)
print(standings)

for team, score in results.items():
	if score[0] > score[1]:
		standings[team][0] += 3
	elif score[0] < score[1]:
		standings[team][1] += 3
	else:
		standings[team][0] += 1
		standings[team][1] += 1
print(standings)

Merhaba,

[ . . . ]
for team, score in results.items():
	if score[0] > score[1]:
		standings[team][0] += 3
	elif score[0] < score[1]:
		standings[team][1] += 3
	else:
		standings[team][0] += 1
		standings[team][1] += 1
print(standings)
[ . . . ]

yerine

[ . . . ]
for team, score in results.items():
	if score[0] > score[1]:
		standings[team[0]] += 3
	elif score[0] < score[1]:
		standings[team[1]] += 3
	else:
		standings[team[0]] += 1
		standings[team[1]] += 1
print(standings)
[ . . . ]

Yazmalısın.

Çünkü hataya göre team bir string değil, bir tuple.

Hata diyor ki:

standings[team][0] += 3
Key Error: ('Galatasaray', 'Real Madrid')

Kolay gelsin :slight_smile:

Bu arada söylemeden edemeyeceğim. Yaptığın çalışma gerçekten çok güzel bir pratik. Seni canı gönülden tebrik ederim.

1 Beğeni

@Cihat_Altiparmak @EkremDincel @aib sizlerin yönlendirmeleriyle zaten sonuca ulaşıyorum. Maç sonuçlarına göre Puan Sıralamasını da hallettim, kodun son hali aşağıdaki gibi oldu. Sadece @aib tarafından yazılan başlangıçtaki fonksiyonda kullanılan yöntemi kendimce çözümleyemedim. Ben epey uzun bir kodla çözdüğüm için kendi yöntemimi kullanmadım. Bu pratikte bana ait olmayan fonksiyonla ilgili Sn. @aib umarım bu yazıyı okuyup kısa bir anlatım yapar da kafamda yerine oturmayan taş kalmaz… Ayrıca iyi niyetli sözleriniz için teşekkür ederim.

def balcomb2i(n):
	for i in range(n):
		for j in range(i+1, n):
			if j - i <= n // 2:
				yield i, j
			else:
				yield j, i

def balcomb2(xs):
	return list(map(lambda c: (xs[c[0]], xs[c[1]]), balcomb2i(len(xs))))


teams = [
	"Galatasaray", "Real Madrid", "Manchester United", "Bayern Munich", "Juventus"
]
#print("\n".join(map(str, sorted(balcomb2(teams)))))
print()
print(f'{"Champions League Matches 2020-2021":-^100}')
for match in (balcomb2(teams)):
	print(*match, sep=" - ")

macListesi = balcomb2(teams)
print(f'{"Match Results":-^100}')

results = {}
for match, result in balcomb2(teams):
	home = random.randint(0, 6)
	away = random.randint(0, 6)
	results[match, result] = home  , away

for team, score in results.items():
	print(f"{team[0]} : {score[0]} , {team[1]} : {score[1]}")

print(f'{"Champions League 2020 - 2021 Standings":-^100}')
teams = tuple(teams)
point = 0
standings = dict.fromkeys(teams, point)

for team, score in results.items():
	if score[0] > score[1]:
		standings[team[0]] += 3
	elif score[0] < score[1]:
		standings[team[1]] += 3
	else:
		standings[team[0]] += 1
		standings[team[1]] += 1

standings = sorted(standings.items(), reverse=True, key=lambda x:x[1] )

for x in standings:
	print(*x)
1 Beğeni

Kodun neresini anlamadigini belirtirsen, arkadaslar benden daha iyi anlatacaktir.

5 satirin 3’unun duz kombinasyon kodu oldugunu fark edersen cunku, geriye kalan 2 satirdaki hinlik kendini acik ediyor.

yield ve genarator kavramlarını inceliyorum bir kaç örnek yapıp tam olarak ne yaptığınızı anlayamazsam sorum olacak teşekkür ederim.