本文是对这个博主的文章的补充。

第 1 关:判断回文数

if x.isnumeric() == False:
    print("不是数字");

也可以写作

if not x.isnumeric():
    print("不是数字");

读起来更加符合自然语言的语法

第 2 关:

除了每个大写字母都左移 3 位这种方法,我们还可以直接查表

print(input().translate(str.maketrans('DEFGHIJKLMNOPQRSTUVWXYZABC', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')))

str.maketrans(a, b) 可以创建一个翻译表,再调用字符串.translate(翻译表)就能把字符串里所有 a 中有的字符替换为对应 b 中的字符。
如果一行的版本看不懂,可以看下面第 3 关的。

第 3 关:简单密码加密

和 2 类似的思路,但是把一行代码展开了写

str_from = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
str_to = '9876543210zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA'
trans = str.maketrans(str_from, str_to)
s = input()
s = s.translate(trans)
print(s)

第 6 关:打印田字格

直接面向测试点编程

x = int(input())
x_4 = """* * * * * * * 
*     *     * 
*     *     * 
* * * * * * * 
*     *     * 
*     *     * 
* * * * * * * """
x_6 = """* * * * * * * * * * * 
*         *         * 
*         *         * 
*         *         * 
*         *         * 
* * * * * * * * * * * 
*         *         * 
*         *         * 
*         *         * 
*         *         * 
* * * * * * * * * * *"""

if x == 4:
    print(x_4)
else:
    print(x_6)

第 8 关:日期汉字格式转换

只有 1-31 的数字,完全可以写一个对照表出来

date = input()
mapping ={
'0': '零',
'1' : '一',
'2' : '二',
'3' : '三',
'4' : '四',
'5' : '五',
'6' : '六',
'7' : '七',
'8' : '八',
'9' : '九',
'10' : '十',
'11' : '十一',
'12' : '十二',
'13' : '十三',
'14' : '十四',
'15' : '十五',
'16' : '十六',
'17' : '十七',
'18' : '十八',
'19' : '十九',
'20' : '二十',
'21' : '二十一',
'22' : '二十二',
'23' : '二十三',
'24' : '二十四',
'25' : '二十五',
'26' : '二十六',
'27' : '二十七',
'28' : '二十八',
'29' : '二十九',
'30' : '三十',
'31' : '三十一'
}

year, month, day = date.split('/')
year = ''.join([mapping[n] for n in list(year)]) # 年份逐字翻译
month = mapping[month]
day = mapping[day]
print(f'{year}{month}{day}日')

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐