Saya baru mengenal python dan saat ini belajar tentang penanganan kesalahan dengan python. Ada latihan yang ingin saya selesaikan tetapi tidak tahu caranya.

Fungsi menerima nilai r dan mengembalikan volume bola. Jika r sama dengan atau kurang dari nol diteruskan ke fungsi, fungsi mengembalikan pemberitahuan entri data yang salah.

Melindungi fungsi dari crash. Dalam kasus pengecualian selama eksekusi, fungsi harus mengembalikan pesan kesalahan.

Kode saya

import math
def vol(r):
    try:
        return (4/3*math.pi*r**3)           
      
    except TypeError:
        return "A type error has occurred."
    

Ketika saya menguji print(vol(-3)) hasilnya adalah -113.09733552923254 tetapi seharusnya memperingatkan saya bahwa angkanya kurang dari 0.

-3
Renato 10 Januari 2021, 12:47

3 jawaban

Jawaban Terbaik

Tentu saja, itu akan mengembalikan angka bahkan jika Anda memasukkan nilai negatif. Karena tidak ada harapan untuk terjadi kesalahan saat Anda memasukkan nilai negatif.

Jika Anda ingin membuatnya terjadi kesalahan, gunakan raise dengan if

Ini contohnya

import math
def vol(r):
    try:
        if r <= 0:
            raise TypeError
        return (4/3*math.pi*r**3)           
      
    except TypeError:
        return "A type error has occurred."
0
Jun 10 Januari 2021, 09:57

EDIT: Jika Anda tidak ingin memunculkan pengecualian, Anda juga dapat mencetak pesan kesalahan normal di konsol.

import math
def vol(r):
    if(r <= 0):
        raise ValueError("Radius should be greater than 0")
    return (4/3*math.pi*r**3)  
0
Ezio 10 Januari 2021, 09:52

Berdasarkan komentar Anda, saya kira Anda harus mencoba memecahkan tantangan pengkodean yang mengharapkan output spesifik dengan input spesifik.

keluaran yang diharapkan adalah " Anda memasukkan nilai yang salah."

harus memperingatkan saya bahwa angka kurang dari 0.

Sementara saya pikir lebih baik untuk menyelesaikan tantangan semacam ini sendiri, berikut adalah solusi yang mungkin.

import math

def vol(r):
    try:
        # You weren't checking the value of r
        if r < 0:
            raise ValueError

        return (4 / 3 * math.pi * r**3)           
      
    except ValueError:
        # If a ValueError occurs, return the string expected for the challenge
        return ("You entered incorrect values.")
0
shellwhale 10 Januari 2021, 10:07