用Python 計算十位數以內的數的反數

2021-10-09 17:26:09 字數 2129 閱讀 8290

根據題目可知期望的結果如下:

數字:

2100

210o的反數為∶12

數字:-

2100

-2100的反數為∶-

12數字:

2001

2001的反數為:

1002

數字:-

2010

-2010的反數為:

-102

首先我們要判斷該字串是否由數字組成(包括負號),python自帶的函式isdigit()只能判斷正整數,isnumeric()只針對unicode物件。為了判斷負數,我們建立自定義函式is_number()來判斷字串是否為數字:

'''

'''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

測試結果如下:

數字:

210true

數字:-

210true

數字:ad2

false

數字:-ad12

false

數字:1ad2w

false

數字:-2asd

false

將字串轉為數字,判斷數字是否在(-2)31至231之間,若不在,提示超出範圍:

數字:

2200000000

超出限定範圍!

數字:-

2200000000

超出限定範圍!

若在,計算該數的反數:其中,若數為負數,則除去第乙個字元再計算:

'''

'''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,若是,除去第乙個字元:

'''

'''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

平方十位數

由0 9這10個數字不重複 不遺漏,可以組成很多10位數字。這其中也有很多恰好是平方數 是某個數的平方 比如 1026753849,就是其中最小的乙個平方數。請你找出其中最大的乙個平方數是多少?include include includeusing namespace std 定義乙個判斷乙個十位...

藍橋 平方十位數

題目 由0 9這10個數字不重複 不遺漏,可以組成很多10位數字。這其中也有很多恰好是平方數 是某個數的平方 比如 1026753849,就是其中最小的乙個平方數。請你找出其中最大的乙個平方數是多少?注意 你需要提交的是乙個10位數字,不要填寫任何多餘內容。解法1 運用next permutatio...

藍橋杯 平方十位數 DFS

1.題目 由0 9這10個數字不重複 不遺漏,可以組成很多10位數字。這其中也有很多恰好是平方數 是某個數的平方 比如 1026753849,就是其中最小的乙個平方數。請你找出其中最大的乙個平方數是多少?2.解決方法 dfs 模板 3.include include include include ...