class Calisan:
counter = 0
zam_orani = 0.0
def __init__(self, isim, soyisim, maas): # constructor
self.isim = isim
self.soyisim = soyisim
self.maas = maas
self.email = isim + soyisim + "@asd.com"
Calisan.counter = Calisan.counter + 1
def giveNameSurname(self):
return self.isim + " " + self.soyisim
def zam_yap(self):
self.maas = self.maas + self.maas * self.zam_orani
kisi = Calisan(input("İsim:"),input("Soyad:"),input("Maaş:"))
print("CEO:",kisi.isim,kisi.soyisim,"\nMail:",kisi.email,"\nMaaş:",kisi.maas)
Hosgeldiniz = "Sisteme Hoşgeldiniz efendim,toplam çalışan sayınız {}'dir ".format(Calisan.counter)
print(Hosgeldiniz)
Calisan.zam_orani = float(input("Zam oranını giriniz:"))
kisi.zam_yap()
print("Zamlı Maaş:",kisi.maas)
为什么会出现此错误?
Traceback (most recent call last):
File "C:/Users/CaHeD/Desktop/Python/veriable/zamoranı.py", line 28, in <module>
kisi.zam_yap()
File "C:/Users/CaHeD/Desktop/Python/veriable/zamoranı.py", line 22, in zam_yap
self.maas = self.maas + self.maas * self.zam_orani
TypeError: can't multiply sequence by non-int of type 'float'
答案 0 :(得分:2)
所有输入都是python中的字符串,因此您需要将其更改为float或integer。用float(input(“ Maas:”))
更改输入行的结尾答案 1 :(得分:0)
在Python中,您可以将序列(例如列表[]
或str
)乘以整数(整数)以复制序列中的元素。例如:
>>> l = 'abc'
>>> l * 3
'abcabcabc'
您不能将序列与非整数相乘,例如1.5
:
>>> l = 'abc'
>>> l * 1.5
TypeError: can't multiply sequence by non-int of type 'float'
在代码中,将字符串self.maas
乘以self.zam_orani
,即float
,即0.0。要乘以该数字,您需要将其转换为int
>>> l = 'abc'
>>> l * int(1.5) # int(1.5) = 1
'abc'
或者,如果您打算将所有输入均设为数字(即,您想输入两个数字并得到乘积),则可以在计算之前将它们转换为浮点数,例如
>>> a = '0.5'
>>> b = '1.3'
>>> float(a) * float(b)
0.65