Pythonda sınırsız parametreli hesap makinesi yapmada sorun yaşamaktayım

#/usr/bin/env Python
#-*-coding:utf-8-*-

from io import open
import time
import datetime
from datetime import date
import os
import sys

def topla(*p):
	toplam=1
	for i in p:
		toplam += i
	return toplam


def cikar(*p):
	cikarim=1
	for i in p:
		cikarim -= i
	return cikarim

def carp(*p):
	carpim=1
	for i in p:
		carpim *= i
	return carpim

def bol(*p):
	bolum=1
	for i in p:
		bolum %= i
	return bolum

def ana():
	islem = raw_input("Hangi İşlem Yapmak İstiyorsunuz ? : ")
	if "toplama" in islem:
		sayi = input("Toplanılacak Sayıları Giriniz : ")
		topla(sayi)
	elif "çıkarma" in islem:
		sayilar = input("Çıkarılacak Sayıları Giriniz : ")
		cikar(sayilar)
	elif "bölme" in islem:
		sayilar = input("Bölünecek Sayıları Giriniz : ")
		bol(sayilar)
	elif "çarpma" in islem:
		sayilar = input("Çarpılacak Sayıları Giriniz : ")
		carp(sayilar)

print("İşlemleri : toplama, çıkarma, bölme, çarpma olarak seçmelisiniz")
print("=================================================================")
ana()

TypeError: unsupported operand type(s) for +=: ‘int’ and ‘tuple’

hatası almaktayım

yanlız topla ve diğer fonksiyonlar çalışmakta

Hatanın tamamını atın, nerede verildiğini falan göremiyoruz.

İnterpreter hatasını okuduğumda anladığım kadarı ile şurada bir hata veriyor.

def topla(*p):
	toplam=1
	for i in p:
		toplam += i
	return toplam

Bu kodu çalıştırıp hata aldığınız zaman bir tuple değeri girmişsiniz. döngü satırı i değişkenine bir tuple değerini kayıt etmiş.

Bildiğiniz gibi “Tuple” ile “İnteger” toplanamaz o yüzden bir hata vermiş :slight_smile:

Ne dediğimi tam olarak anlıyamadıysanız şuraya bir bakın:

def tanımlama(*p):
    for i in p:
        print(i)

tanımlama((5,2,3))

#OUTPUT;
(5,2,3)

“topla” Fonksiyonunda argument olarak Liste kullan
sayilari input ettikten sonra listeye cevir ve fonksiyonunu kullan.
Anlatamadiysam kod’a bak :slight_smile:

Eger dogru anladiysam boyle bir cozumu olabilir:

def topla(p ):
toplam = 0
for i in p:
toplam + = i
return toplam

sayilar = input() #sayi al

sayilar = map(int, sayilar.split(’,’)) #aktardigin sayilari ayirip listeye cevirir, type’i integer yapar(eger sayilari arada virgul ile degilde bosluk ile gireceksen boyle yap: sayilar.split())

topla(sayilar)

Cok farkli yontemleri var ama umarim bu da uyar sana

@don_quijote

Aşağıdaki bağlantıyı bir incelemenizde fayda var.

1 Beğeni