亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

請問這段代碼為什么執行不了

def?average(*args):
????sum?=?0
????if?len(args)?==?0:
????????return?0
????elif?isinstance(args,?str):
????????return?"傳入變量為文本,無法計算平均值,請重新上傳"
????else:
????????for?item?in?args:
????????????sum?+=?item
????????avg?=?sum?/?len(args)
????????return?avg


print(average())
print(average("a",?"b"))
print(average(1,?21))
print(average(1.5,?3.5,?5,?5))

執行這段代碼的時候為什么沒有進行這段的校驗呢?
elif?isinstance(args,?str):
????????return?"傳入變量為文本,無法計算平均值,請重新上傳"


正在回答

4 回答

你輸入??

print(average("a",?"b"))
它會當作數組類型,而不是字符串,變成一個字符串應該就對了。


1 回復 有任何疑惑可以回復我~

通過循環次數來判斷是否有字符,還可以只計算tuple里數字元素的平均值

def average(*args):

? ? if len(args) > 0:

? ? ? ? sum = 0

? ? ? ? i = 0

? ? ? ? for item in args:

? ? ? ? ? ? if isinstance(item,int) or isinstance(item,float):

? ? ? ? ? ? ? ? sum += item

? ? ? ? ? ? ? ? i += 1

? ? ? ? if i > 0 :

? ? ? ? ? ? avg = sum / i

? ? ? ? ? ? return avg

? ? ? ? else:

? ? ? ? ? ? print('傳參中沒有數字型元素')

? ? else:

? ? ? ? print('傳參為空')

? ? return None


0 回復 有任何疑惑可以回復我~
elif?isinstance(args,?str):
????????return?"傳入變量為文本,無法計算平均值,請重新上傳"

這里的args 是tuple類型, for item in args:? ?中的 item 才是 str 類型。

for?item?in?args:
????if?isinstance(item,?str):
????????return?"傳入變量為文本,無法計算平均值,請重新上傳"

在for循環里加入 if 就可以了。

1 回復 有任何疑惑可以回復我~

# -*- coding: UTF-8 -*-

def average(*args):

? ? sum = 0

? ? if len(args) == 0:

? ? ? ? return 0

? ? else:

? ? ? ? for i in args:

? ? ? ? ? ? if isinstance(i,(int,float)):

? ? ? ? ? ? ? ? sum += i

? ? ? ? ? ? ? ? avg = sum / len(args)

? ? ? ? ? ? else:

? ? ? ? ? ? ? ? return"傳入變量為文本,無法計算平均值,請重新上傳"

? ? return avg? ? ? ? ? ??

我是根據你的這樣改的,就OK了

0 回復 有任何疑惑可以回復我~
#1

廖玉文_給力印

else: return"傳入變量為文本,無法計算平均值,請重新上傳" break 建議加上break,如在可變參數中發現一個str,立刻跳出for循環。 要不可變參數如果是兩個str,那會在輸出中出現兩次"傳入變量為文本,無法計算平均值,請重新上傳"。
2021-01-12 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

請問這段代碼為什么執行不了

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號