根据题目可知期望的结果如下:
<code class="language-python">数字:2100 210O的<a href="https://www.gaodaima.com/tag/%e5%8f%8d%e6%95%b0" title="查看更多关于反数的文章" target="_blank">反数</a>为∶12 数字:-2100 -2100的反数为∶-12 数字:2001 2001的反数为:1002 数字:-2010 -2010的反数为:-102 </code>
www#gaodaima.com来源gaodai$ma#com搞$$代**码)网搞代码
首先我们要判断该字符串是否由数字组成(包括负号),Python自带的函数isdigit()只能判断正整数,isnumeric()只针对unicode对象。为了判断负数,我们创建自定义函数is_number()来判断字符串是否为数字:
<code class="language-python">""" 遇到问题没人解答?小编创建了一个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 </code>
测试结果如下:
<code class="language-python">数字:210 True 数字:-210 True 数字:ad2 False 数字:-ad12 False 数字:1ad2w False 数字:-2asd False </code>
将字符串转为数字,判断数字是否在(-2)31至231之间,若不在,提示超出范围:
<code class="language-python">数字:2200000000 超出限定范围! 数字:-2200000000 超出限定范围! </code>
若在,计算该数的反数:其中,若数为负数,则除去第一个字符再计算:
<code class="language-python">""" 遇到问题没人解答?小编创建了一个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("超出限定范围!") </code>
如果认为写到这里就可以结束,就会出现如下结果:
<code class="language-python">数字:2100 2100的反数为:0012 </code>
为避免该情况,在代码中添加一些细节,判断反过来的字符串第一个字符是否为0,若是,除去第一个字符:
<code class="language-python">""" 遇到问题没人解答?小编创建了一个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) </code>
到这里我们就完全做出来这个题目了,调试结果如下:
<code class="language-python">数字:1235 1235的反数为:5321 数字:1200 1200的反数为:21 数字:-325 -325的反数为: -523 数字:-320 -320的反数为: -23 </code>