前面我們講了isdigit功能,這個功能只是確認(rèn)字符串中是否都是數(shù)字。
我講一個案例,簡單的猜字游戲,就知道可以用在哪里了。
num = input('請輸入你猜的數(shù)字:').strip()
后面的這個點strip我們前面講過的,防止手抖或者眼神不太好。然后就要做判斷了,比如我們要讓用戶猜的數(shù)字是36,開始做判斷。
num = input('請輸入你猜的數(shù)字:').strip()
if num > 36:
print('猜大了')
elif num < 36:
print('猜小了')
else:
print('猜中了')
當(dāng)然現(xiàn)在有個問題,我們前面這個strip處理的字符串,結(jié)果還是一個字符串,字符串是沒辦法直接和int類型作比較的所以我們還要做一步類型轉(zhuǎn)換,用int這個歌功能把num這個字符串轉(zhuǎn)成int類型,然后再賦值給num。
num = input('請輸入你猜的數(shù)字:').strip()
num = int(num)
if num > 36:
print('猜大了')
elif num < 36:
print('猜小了')
else:
print('猜中了')
這樣能理解吧,num綁定了新的值,原來的值引用計數(shù)為0就被回收了嘛。我們直接開始打印。
我輸入33,就顯示猜小了,這樣只能猜一次,我想讓用戶重復(fù)猜,猜對了才能退出程序。
這應(yīng)該怎么做?我們前面學(xué)過while循環(huán)就能解決這個問題,代碼最上面輸入while 1,這個理解嗎,隱式布爾值嘛,然后猜對了后面增加一個break,結(jié)束循環(huán)。
while 1:
num = input('請輸入你猜的數(shù)字:').strip()
num = int(num)
if num > 36:
print('猜大了')
elif num < 36:
print('猜小了')
else:
print('猜中了')
break
我先輸入錯誤的20,讓我繼續(xù)猜,然后我再輸入正確的,打印猜中了,最后結(jié)束循環(huán)。
但是還有一種情況,有的用戶不按套路來,在里面輸入英文,這樣的話程序就會直接報錯。
這是因為int這個功能他只能轉(zhuǎn)純數(shù)字的字符串,現(xiàn)在我們就可以用到剛剛講的isdigit了。在用戶輸入之后我們以前判斷一下,如果是串?dāng)?shù)字那就轉(zhuǎn)換吃int類型,如果不是串?dāng)?shù)字,就直接打印‘別調(diào)皮了!’,然后下面continue,進入下一次循環(huán)。
while 1:
num = input('請輸入你猜的數(shù)字:').strip()
if num.isdigit():
num = int(num)
else:
print('別調(diào)皮了!')
continue
if num > 36:
print('猜大了')
elif num < 36:
print('猜小了')
else:
print('猜中了')
break
這樣運行的話,程序怎么樣都不會報錯了。
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » Python 字符串詳解之isdigit小案例