Lỗi TypeError: unsupported operand type(s) for /: 'str' and 'int' trong python

đây là code cua mình:

# create a formula calculate No. of cake may have
# can 3 vars : trung, bot, cream
# 2 trung + 2 bot = 1 kep
# 5 kep + 1 cream = 1 cake

def bk(egg, fl):
    if egg < fl:
        return egg
    else:
        return fl

def cake(bk, cr):
    if bk/5 > cr:
        return cr
    else:
        return int(bk/5)

e = raw_input("nhap so trung")
f = raw_input("nhap so bot")
cr = raw_input("nhap so cream")
k = bk(e, f)

print k

c = cake(k/2, cr)

print c

# print "so bank kep la %d" % int(k/2)
# print "so cake la: %d" %c

khi mình chạy báo lỗi là:


Traceback (most recent call last):
  File ".\ex4.py", line 25, in <module>
    c = cake(k/2, cr)
TypeError: unsupported operand type(s) for /: 'str' and 'int'

các bạn cho mình hỏi làm sao xửa lỗi này?

khi mình cho e,f,c = 1 số cụ thể ở trong code thì ko bị lỗi

Cám ơn các bạn

1 Like

Kết quả trả về của raw_input bao giờ cũng là 1 string, bạn phải chuyển nó sang kiểu số (int, float,…) nếu muốn tính toán với nó.

int_var = int(raw_input("Input your stupid number: "))
print(int_var * 100)  # không lỗi

PS C:\Users\helen\Desktop\hocpython> python .\ex4.py
e=10
f=20
c=30
10
Traceback (most recent call last):
File “.\ex4.py”, line 25, in
c = cake(k/2, cr)
TypeError: unsupported operand type(s) for /: ‘str’ and ‘int’

đây chính xác là những gì mình in ra dc, khi chưa cho int(raw_input)
vậy tại sao trứng và bột nó có thể biết dc đó là số , còn cream thì ko?

btw: mình đã thử cho in và vẫn bị lỗi như vậy

1 Like

Không phải là nó không biết.

Kiểu string cũng so sánh được. Khi bạn chưa ép kiểu int() cho e và f, lúc này e và f vẫn là string. Bạn gọi hàm bk(e, f) để so sánh e và f, và việc so sánh vẫn xảy ra.

10 < 20
'10' < '20'

Lỗi ở dòng nào?

1 Like

Rất cám ơn bạn, mình đã thử lại và thành công :thumbsup:

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?