根據題目可知期望的結果如下:
數字:2100
210O的反數為∶12
數字:-2100
-2100的反數為∶-12
數字:2001
2001的反數為:1002
數字:-2010
-2010的反數為:-102
首先我們要判斷該字串是否由數字組成(包括負號),Python自帶的函式isdigit()只能判斷正整數,isnumeric()只針對unicode物件,為了判斷負數,我們創建自定義函式is_number()來判斷字串是否為數字:
'''
遇到問題沒人解答?小編創建了一個Python學習交流群:778463939
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
def is_number(s):
try:
float(s)
return True
except ValueError:
pass
try:
import unicodedata
unicodedata.numeric(s)
return True
except(TypeError, ValueError):
pass
return False
測驗結果如下:
數字:210
True
數字:-210
True
數字:ad2
False
數字:-ad12
False
數字:1ad2w
False
數字:-2asd
False
將字串轉為數字,判斷數字是否在(-2)31至231之間,若不在,提示超出范圍:
數字:2200000000
超出限定范圍!
數字:-2200000000
超出限定范圍!
若在,計算該數的反數:其中,若數為負數,則除去第一個字符再計算:
'''
遇到問題沒人解答?小編創建了一個Python學習交流群:778463939
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
if b>pow(-2,31) and b<pow(2,31):
if b<0:
y=a[1::]
x=y[::-1]
print(a+"的反數為:"+"-"+x)
else:
x=a[::-1]
print(a+"的反數為:"+x)
else:
print("超出限定范圍!")
如果認為寫到這里就可以結束,就會出現如下結果:
數字:2100
2100的反數為:0012
為避免該情況,在代碼中添加一些細節,判斷反過來的字串第一個字符是否為0,若是,除去第一個字符:
'''
遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
if b<0:
y=a[1::]
x=y[::-1]
while x[0]=='0':
x=x[1::]
print(a+"的反數為:"+"-"+x)
else:
x=a[::-1]
while x[0] in ['0']:
x=x[1::]
print(a+"的反數為:"+x)
到這里我們就完全做出來這個題目了,除錯結果如下:
數字:1235
1235的反數為:5321
數字:1200
1200的反數為:21
數字:-325
-325的反數為: -523
數字:-320
-320的反數為: -23
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/114492.html
標籤:其他
下一篇:C++中指標的問題
