簡體   English   中英

python中的isspace函數

[英]Isspace function in python

我在嘗試執行此代碼時遇到問題,我希望用戶輸入一個值,程序檢查該值是否為字符串,然后返回長度。 如果該值包含空格,程序會刪除空格並打印長度。 但是如果它包含任何整數值,程序將返回“不允許使用整數”

這是代碼:

def length(Name):
    long = len(Name)
    return long

new_length = input("Please Enter Your name You can use Spaces: ")
value1 = new_length
if value1.isspace() == True:
  print("This is Before Removing Spaces: " + value1)
  value2 = value1.replace(" ", "")
  print("This is After Removing Spaces: " + value2)
elif value1.isalpha() == True: 
  print("Here is The Length: ", length(value1))
elif value1.isdigit() == True:
    print("Integers are not allowed! ")
else:
    print("There's someting wrong with  "+ value1)

所以如果你能幫助我,我很感激。 謝謝

我認為str.isspacestr.isalphastr.isdigit方法不會做您期望它們做的事情。 首先,它們都會測試您輸入的字符串中的所有字符是否屬於其名稱中描述的類型。 如果任何字符匹配,您的代碼似乎希望它們返回True 也就是說,如果有任何空格,您要刪除它們並顯示前后兩個長度。

沒有單一的字符串方法可以在 Python 中為您進行測試。 你可以使用正則表達式(這是更強大,但復雜得多),或者你可以寫一些稍微復雜的代碼做了測試。 我建議使用any函數,並向它傳遞一個生成器表達式,該表達式在字符串中的每個字符上調用您想要的方法。

if any(c.isspace() for c in user_str):
    ...

對於所有測試,這可能並不完全是您想要的。 您的代碼所需的邏輯並不完全顯而易見,因為您的輸出沒有專門解決許多極端情況。 包含字母和數字的字符串是否有效? 一個數字之間有空格,但根本沒有字母怎么樣? 您可能需要對if / elif / else語句的條件重新排序,以便它們符合您的意圖。

我還注意到,您用於用戶輸入的變量名稱new_length非常具有誤導性。 不是長度,而是你要測量長度的繩子! 對具有誤導性或不清楚的變量名稱的變量進行邏輯錯誤要容易得多,因此花時間回去重新考慮您之前選擇的名稱有時是個好主意,因為它可以大大提高代碼的清晰度! 描述性變量名稱很好,但它是清晰和簡潔之間的權衡,因為長名稱輸入起來很乏味(並且容易出現拼寫錯誤)。 它們還可能導致行長問題,這會使得在編輯器屏幕上一次查看所有代碼變得不太方便。

您可以使用此函數檢查輸入字符串是否包含數字:

def hasNumbers(inputString):
        return any(char.isdigit() for char in inputString)

如果有數字則返回真,如果沒有則返回假。

至於空格,您可以省略 isspace()。 即使沒有空格,單獨使用 replace() 也可以完成這項工作。

stri='jshsb sjhsvs jwjjs'
stri=stri.replace(' ','')

我建議在這些情況下閱讀文檔。 對於isspace ,請注意這里

如果字符串中只有空白字符且至少有一個字符,則返回 True,否則返回 False。

也就是說,如果有任何不是空格的東西,它將是 False。 這很煩人,但為什么要首先檢查? 只做替換! 如果沒有空格,它什么也不做。 如果你需要打印這些語句,你可以這樣做

if ' ' in value1:
  ...

(當然,這並沒有考慮所有可能的空格類型,如果需要,請檢查其他答案以進行 for 循環)

接下來,我相信您需要刪除elif並只使用if語句,因為請注意,如果您輸入一個帶有空格的名稱,它將打印名稱並刪除空格......之后什么都沒有。 即使它有整數也不是。 這是因為elif語句不會在它們之上執行一次。

還有很多其他的事情你需要考慮,但我認為你應該首先考慮這兩個。 希望有用!

您可以使用 Python 中的 re 模塊來檢查字符串中的空格。 如果有空格,則返回 True,否則返回 False。

import re
def length(Name):
    long = len(Name)
    return long

new_length = input("Please Enter Your name You can use Spaces: ")
value1 = new_length
if re.search('\s', value1):
  print("This is Before Removing Spaces: " + value1)
  value2 = value1.replace(" ", "")
  print("This is After Removing Spaces: " + value2)
  print("Here is The Length: ", length(value2))
elif value1.isalpha() == True: 
  print("Here is The Length: ", length(value1))
elif value1.isdigit() == True:
    print("Integers are not allowed! ")
else:
    print("There's someting wrong with  "+ value1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM