“float”类型的nonint

2024-09-29 01:24:42 发布

您现在位置:Python中文网/ 问答频道 /正文

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'

Tags: selfinputemaildefcounterprintyapzam
2条回答

在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,即0.0,即float。要乘以这个数,需要将它转换成int

>>> l = 'abc'
>>> l * int(1.5)  # int(1.5) = 1
'abc'

或者,如果您的输入都是数字(例如,您希望输入两个数字并得到乘积),您可以在计算之前将它们转换为浮点数,例如

>>> a = '0.5'
>>> b = '1.3'
>>> float(a) * float(b)
0.65

在python中,所有输入都是字符串,因此需要将其更改为float或integer。用float更改输入行的结尾(input(“Maas:”))

相关问题 更多 >