2014-11-04 31 views
0

我需要編寫一個函數,當用戶輸入一個字符串時,根據字符串是否全是數字,這個函數會給出true或false。這是我到目前爲止,但林不知道什麼是錯的確定一個字符串是否只有使用函數的數字

def string(): 
    st=input('Enter string: ') 
    if st.isdigit(): 
     stc='True' 
    else: 
     stc='False' 


     return stc 


n = int(input("Number of runs: ")) 
for i in range(n): 
    print() 
    stc=string() 
    if stc=='True': 
     print('True') 
    else: 
     print('False') 
+0

你只在返回負值的情況下(縮進很重要!),爲什麼返回一個字符串,不是布爾? – jonrsharpe 2014-11-04 23:07:21

回答

0

你只在STC返回else

正確的是:

def string(): 
    st=input('Enter string: ') 
    if st.isdigit(): 
     stc='True' 
    else: 
     stc='False' 
    return stc 

而是使用代表字符串布爾值,爲什麼不直接使用TrueFalse

def string(): 
    st=input('Enter string: ') 
    if st.isdigit(): 
     stc=True 
    else: 
     stc=False 
    return stc 

那麼你可以改變,如果條件以及一切都會更好一點:

... 
stc=string() 
if stc: 
    print('True') 
else: 
    print('False') 

更新:

正如評論指出的那樣,你也可以只是完全跳過if條件並且只返回st.isdigit()這樣:

def string(): 
    st=input('Enter string: ') 
    return st.isdigit() 

請記住,現在你得到一個布爾值(True/False)作爲回報,所以你需要調整if條件

+0

哇,謝謝。 – Kujo 2014-11-04 23:08:29

+2

如果st.isdigit():stc = True else:stc = False'是不好的樣式,'return st.isdigit()'會產生相同的結果。 – jonsca 2014-11-04 23:12:01

+0

的確,整個函數可以寫成'string = str.isdigit'。 – kindall 2014-11-04 23:15:41

相關問題