Làm thế nào để bạn viết bội số của 10 trong python?

Tôi sẽ cố gắng điểm qua một số điểm có thể hữu ích cần lưu ý. Đầu tiên, có một số điều tôi thích về mã của bạn. Đầu tiên nó rất dễ đọc. Thứ hai, tôi thích rằng bạn chia logic của bạn. Bạn cũng chia tách tìm chuỗi và in nó. cái này tốt. Với điều này đã được nói, luôn có những điều có thể và nên được cải thiện

ngữ nghĩa

Bạn nên sử dụng mô-đun

    elif num % 5==0:
        return 'Buzz'
    return num
4 trong câu trả lời của mình

def fizz_buzz[num]:
    if num%3==0 and num%5==0:
        return 'FizzBuzz'

    elif num % 3 == 0:
        return 'Fizz'

    elif num % 5==0:
        return 'Buzz'
    else:
        return num

if __name__ == "__main__":

    for n in range[1,100]:
        print[fizz_buzz[n]]

Điều này làm cho mã của bạn có thể tái sử dụng sau này. Ví dụ: bạn có thể gọi các chức năng từ tệp của mình trong các chương trình khác. Mệnh đề

    elif num % 5==0:
        return 'Buzz'
    return num
5 của bạn ở cuối mã là vô dụng. Bạn có thể đã viết

    elif num % 5==0:
        return 'Buzz'
    return num

lựa chọn thay thế

Một vấn đề với mã của bạn là bạn có nhiều điểm thoát. Bây giờ đây không phải là điều gì đó phải đổ mồ hôi quá nhiều, và nó không phải là mục tiêu để luôn cố gắng có một lối thoát duy nhất. Tuy nhiên, việc gỡ lỗi mã có ít điểm thoát hơn có thể dễ dàng hơn. Tất nhiên, điều này phù hợp hơn nhiều trong mã dài hơn và phức tạp hơn. Mặc dù đó là một điều tốt để luôn luôn có trong tâm trí. Một cách để làm điều này là xác định một biến mới

    elif num % 5==0:
        return 'Buzz'
    return num
0

def fizz_buzz[num]:
    string = ''
    if num%3==0 and num%5==0:
        string = 'FizzBuzz'

    elif num % 3 == 0:
        string = 'Fizz'

    elif num % 5==0:
        string = 'Buzz'

    if string:
       return string
    return num

Mã hiện chỉ có hai điểm thoát tuy nhiên nó vẫn có thể được cải thiện. Một điểm mấu chốt là nếu một số chia hết cho

    elif num % 5==0:
        return 'Buzz'
    return num
1 và
    elif num % 5==0:
        return 'Buzz'
    return num
2 thì nó cũng chia hết cho
    elif num % 5==0:
        return 'Buzz'
    return num
3. Vì vậy, chúng ta có thể dần dần xây dựng chuỗi, như hình dưới đây

def fizz_buzz[num]:
    string = ''

    if num % 3 == 0:
        string += 'Fizz'

    if num % 5==0:
        string += 'Buzz'

    if string:
       return string
    return num

Cuối cùng, câu lệnh ________ 14 có thể được viết bằng toán tử điều kiện bậc ba

return string if string else n

Kết hợp hai điểm thoát thành một điểm duy nhất. Để tóm tắt

    elif num % 5==0:
        return 'Buzz'
    return num
0

Đóng các bình luận

Python có một style guide PEP 8 giải thích rất chi tiết cách cấu trúc mã của bạn. Tôi hoàn toàn khuyên bạn nên lướt qua nó và làm theo nó

Bài toán

    elif num % 5==0:
        return 'Buzz'
    return num
5 rất, rất đơn giản. Nó có thể được giải quyết theo một số cách chỉ bằng một dòng đơn giản. Syb0rg, chỉ ra một cách để viết mã này

    elif num % 5==0:
        return 'Buzz'
    return num
2

Bạn thậm chí có thể rút ngắn điều này thành

    elif num % 5==0:
        return 'Buzz'
    return num
3

Sử dụng một số voodoo Pythonic khó hiểu. Tuy nhiên, như tôi đã nói trong phần giới thiệu, tôi thích mã của bạn, vì nó dễ hiểu. Hầu như luôn luôn tốt hơn là có mã rõ ràng, dễ đọc hơn mã khó hiểu ngắn hơn một vài dòng. Điều này tất nhiên bỏ qua bất kỳ cải tiến tốc độ và như vậy

[trăn] Viết chương trình đọc danh sách các số nguyên và xuất ra xem danh sách có chứa tất cả các bội số của 10, không có bội số nào của 10 hay các giá trị hỗn hợp. Xác định một hàm có tên is_list_mult10 lấy một danh sách làm tham số và trả về một giá trị boolean cho biết liệu danh sách có chứa tất cả các bội số của mười hay không. Xác định một hàm có tên is_list_no_mult10 lấy một danh sách làm tham số và trả về một giá trị boolean biểu thị liệu danh sách có chứa bội số của mười hay không

Sau đó, viết một chương trình chính nhận vào một số nguyên, biểu thị kích thước của danh sách, theo sau là các giá trị của danh sách. Số nguyên đầu tiên không có trong danh sách

Bán tại. Nếu đầu vào là

5

100

đầu ra là

tất cả các bội số của 10

Bán tại. Nếu đầu vào là

5

95

đầu ra là

không có bội số của 10

Bán tại. Nếu đầu vào là

5

55

đầu ra là

giá trị hỗn hợp

Chương trình phải định nghĩa và gọi hai hàm sau. is_list_mult10[] trả về true nếu tất cả các số nguyên trong danh sách là bội số của 10 và false nếu ngược lại. is_list_no_mult10[] trả về true nếu không có số nguyên nào trong danh sách là bội số của 10 và ngược lại là false.
def is_list_mult10[my_list]
def is_list_no_mult10[my_list]

Chủ Đề