撰寫一個python函式來遍歷字串。如果字串中有任何非英文字符,我希望它回傳 False
def check_if_english(app_name):
for character in app_name:
if ord(character) > 127:
return False
else:
return True
print(ord('??')) # unicode value is 128540
check_if_english('Instachat ??') #returns True
這 ^ 與此有何不同:
def check_if_english(app_name):
for character in app_name:
if ord(character) > 127:
return False
return True
print(ord('??')) # unicode value is 128540
check_if_english('Instachat ??') #returns False
ord() 檔案:https : //python-reference.readthedocs.io/en/latest/docs/functions/ord.html
uj5u.com熱心網友回復:
在第一個中,您將根據第一個字符是否符合條件回傳。在第二個中,您檢查條件的所有字符,檢查所有字符后,回傳 True 含義條件不滿足
uj5u.com熱心網友回復:
只有第一次執行的回傳就足以跳出函式。
第一個將檢查第一個字符“I”并執行 else 部分。當它讀取“I”時回傳真。
第二個沒有其他。因此,在到達表情符號之前,for 回圈內不會執行任何操作。當到達表情符號時,它回傳 False。
uj5u.com熱心網友回復:
第一個程式僅根據第一個字符給出答案。第一次通過回圈時,它將始終回傳 True 或 False。
如果任何字符> 127,第二個程式回傳False。如果它一直運行,即掃描所有字符,并且它們都是ASCII,那么它回傳True。
請注意,您不是在測驗英語,而是在測驗 ASCII。
check_if_english('Das Boot')
會回傳 True
uj5u.com熱心網友回復:
第一個函式將回傳一個總是評估第一個字符的結果。最后一個 func 迭代所有字串字符,然后,它會給你一個結果。
也許您正在尋找下面的功能。它會給你一個包含所有字串字符及其估值的字典。
def check_if_english(app_name):
return {character: False if ord(character) > 127 else True for character in app_name}
uj5u.com熱心網友回復:
不同之處在于,在前面的代碼中,一旦遇到字串中正確的英文字母,它就會直接回傳 true,而不關心剩余的子字串是否包含錯誤的字母
在后面的代碼中,它做你真正想要的:檢查字串中的所有字母是否為假條件,只有當字串中的所有字母都不回傳假時才回傳真。
您可以查看以下示例以獲得更清晰的資訊:
#program to check if a binary string is all 1s
s="1000000"
s2="1111"
#wrong way- (returns true just by checking s[0])
def check_func_wrong(s):
for i in s:
if i==0:
return False
else:
return True
#correct way(checks the whole string)
def check_func_correct(s):
for i in s:
if i == "0":
return False
else:
continue
return True
print('s : ', s,' : ',check_func_wrong(s), 's2 : ', s2,' : ',check_func_wrong(s2) )
print('s : ', s,' : ',check_func_correct(s), 's2 : ', s2,' : ',check_func_correct(s2))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/384594.html
