A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

孔维鹏

初级黑马

  • 黑马币:25

  • 帖子:6

  • 精华:0

© 孔维鹏 初级黑马   /  2019-3-27 22:37  /  1336 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以一个题目的详细解答来发表一下自己对于python的皮毛运用
题目:# # 通过键盘输入一个5位数,判断它是不是回文数。
第一次看到这个题目时,我首先想到了用整除取余的方式去做,于是乎一个初始代码就这样形成了:
num = int(input("请输入: "))
a = num // 10000  # 万位数
b = num % 10000 // 1000  # 千位数
c = num % 1000 // 100  # 百位数
d = num % 100 // 10  # 十位数
e = num % 10  # 个位数
if a == e and b == d:
    print("%s是回文数。" % num)
else:
    print("%s不是回文数" % num)
         一切就这么很简单的完成了,心里还说 so easy,有一天我在看代码的时候,输入了一个六位数,程序报错了,我就想着去稍微改动一下代码,假如说他们输入了不符合要求的数字,程序会提示错误,于是乎,新的代码成型了:
num = input("请输入: ")
if len(num) == 5:
    num = int(num)
    a = num // 10000  # 万位数
    b = num % 10000 // 1000  # 千位数
    c = num % 1000 // 100  # 百位数
    d = num % 100 // 10  # 十位数
    e = num % 10  # 个位数
    if a == e and b == d:
        print("%s是回文数。" % num)
    else:
        print("%s不是回文数" % num)
else:
    print("输入错误")
但是事实就是这么打击我,我发现输入字符串的时候,程序报错了,这还了得,于是乎,又开始改了:(这一次因为学过了切片之类的,所以我换了个方法)
a = input("请输入数字: ")
if a.isdecimal():
    b = list(a)
    if len(b) == 5:
        if b[0] == b[4] and b[1] == b[3]:
            print(a + "是回文数")
        else:
            print(a + "不是回文数")
    else:
        print("请输入一个五位数!!!")
else:
    print("输入错误")
一切似乎很完美了,我也觉得很满意了,反复测试很多次,都可以准确的输出内容,没有报错。但是学了名片系统之后,我发现,我特么又想多了!!!!假如说一个用户输入的不是五位数,应该让他一直输入,直到他输成五位数为止,而不是直接就终止了(如果输入五位数不是回文数的话,这个就不是程序问题,程序只是帮你判断你输入的五位数是不是回文数,不是让你去试探哪个是回文数)于是我又开始了程序的小改动,在最上面加了个while循环:
while True:
    a = input("请输入一个五位数: ")
    if a.isdecimal() and len(a) == 5:
        if a[0] == a[4] and a[1] == a[3]:
            print("%s是一个回文数。" % a)
        else:
            print("%s并不是回文数。" % a)
        break
    else:
        print("输入有误,请重新输入。")
虽然这个程序很简单(题目也简单),但是它从我最开始最原始的一份代码写成现在这样能应对你输入的各种形式的信息,我觉得这是编程路上的一种成长,我们不是在编程的路上,就是在优化代码,让代码趋于完美的路上,加油吧!
谢谢大家耐心看完我的乱扯技术贴,如果有更好的实现代码或者我最后代码功能上还有什么BUG,请大家多多指教,我是一个要淹死在编程海洋里的“猿叔叔”!

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马