code:
# -*- coding: utf-8 -*-
"""
Created on Sun Oct 6 10:55:09 2024
@author: SavingKing
"""
import random
def find_closest_number(user_numbers):
# 生成一個隨機數
random_number = random.randint(1, 100)
print(f"隨機選中的數字是:{random_number}")
# 計算每個數字與隨機數的差的絕對值
differences = [abs(num - random_number) for num in user_numbers]
# 找到最小差值
min_difference = min(differences)
# min_difference = differences.min()
# AttributeError: 'list' object has no attribute 'min'
closest_index = differences.index(min_difference)
closest_number = user_numbers[closest_index]
print(f"差異最小的數字是:{closest_number},其差異是:{min_difference}")
# 假設這是多個用戶輸入的數字列表
user_numbers = [23, 45, 67, 89, 32, 54]
# 調用函數,猜的數字與該亂數最接近,即為中獎者
find_closest_number(user_numbers)
這段程式碼首先定義了一個函數
find_closest_number,
它接收用戶輸入的數字列表。
函數內部生成一個隨機數並計算
每個數字與這個隨機數的差的絕對值,
然後找到最小差值
並輸出這個數字及其差異。
輸出結果:
推薦hahow線上學習python: https://igrape.net/30afN
# min_difference = differences.min()
# AttributeError: 'list' object has no attribute 'min'
在 Python 中,確實存在一些不同的方式來調用函數,這取決於該函數是否是某個類型(如列表、字典等)的方法,或者是一個獨立的函數。理解這一點需要分辨兩種情況:方法調用和函數調用。
方法調用
當一個函數是某個數據類型的內建方法時,它通常是使用點(.
)來調用的,這意味著該函數是綁定到該數據類型的對象上。例如,列表(list)有自己的一些方法,如 append()
, sort()
, reverse()
等,這些都是通過點語法來調用的:
my_list = [3, 1, 2]
my_list.sort()
print(my_list) # 輸出: [1, 2, 3]
函數調用
獨立的函數則不依附於特定的數據對象,它們通常是作為模塊的一部分提供的。例如,min()
和 max()
就是 Python 內建的全局函數,可以直接調用並傳入任意的可迭代對象:
my_list = [3, 1, 2]
minimum_value = min(my_list)
print(minimum_value) # 輸出: 1
對於列表 differences
,沒有名為 min
的方法。因此,當您嘗試使用 differences.min()
時,會報錯,因為 list
對象本身沒有 min
方法。正確的使用方式是使用內建的 min()
函數:
min_difference = min(differences)
總結規則
- 方法調用:當功能是對象的一部分,且專門為該類型的數據設計時,使用點(
.
)語法。這表示該函數是該數據類型的方法。 - 函數調用:當功能是一個獨立的函數,可以對多種類型的數據操作時,直接使用函數名調用。
了解這些規則能幫助您更好地理解何時使用哪種調用方式,並避免在編程時出現錯誤。
Python 中區分方法(method)和函數(function)的一個很好的規則:
方法 (Method):是特定於數據類型的函數,如列表(list),字符串(string),字典(dictionary)等。這些方法是以點(.)語法調用的,因為它們是綁定到特定對象的。例如,list.append()、list.sort()、string.upper() 等。
函數 (Function):是獨立於任何特定數據類型的,可以作用於各種數據,通常是全局可用的,或者屬於某個模塊。例如,min()、max()、len() 等都可以作用於任何可迭代的對象,不僅限於列表。這些函數直接使用函數名來調用,並將對象作為參數傳入。
所以,如果一個功能函數是通用的,不專門屬於任何一種類型的數據,則通常是作為獨立的函數來調用,如 min(list)。而如果一個功能是某種數據類型專有的,則以方法的形式存在,使用點語法調用,如 list.append(x)。這種區分有助於在設計API和使用現有的Python功能時保持清晰和組織性。
推薦hahow線上學習python: https://igrape.net/30afN
近期留言