非'float'类型的int

时间:2018-09-19 20:41:11

标签: python python-3.x python-2.7 python-requests

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'

2 个答案:

答案 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