每日codingame小游戏练习[2021.3.30](python3入门学习之f-string)

题目描述

The 1-digit numbers are ‘one ‘, ’ two’ , ‘three’ , ‘four’ , ‘five’ , ‘six’ , ‘seven’ , ‘eight’ , and ‘nine’.
The two digit numbers starting with 1 are ‘ten’ , ‘eleven’ , ‘twelve’, ‘thirteen’ , ’ fourteen’ , ‘fifteen’ , ‘sixteen’ , ‘seventeen’ , ‘eighteen’ , and ‘nineteen’.
Numbers bigger than 20 need a hyphen ( - ) between their tens and ones digit.
Other than 0 and 10 , the multiples of 10 are’twenty’ , ‘thirty’ , ‘forty’, ‘fifty’ , ’ sixty’ , ‘seventy’ , ‘eighty’ , and ‘ninety’.
Constraints:
1<=number<=99
eg:

InputOutput
52fifty-two

题目分析

题目要求我们把输入的数字,转化为相对于的英文,不同大小范围的数字,有不同的输出要求,直接上代码。

解题代码

我写的代码:

import sys
import math

# Auto-generated code below aims at helping you parse
# the standard input according to the problem statement.
i=['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight','nine']
j=['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen','nineteen']
k=['twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty','ninety']
number = int(input())
if number<10:
    print(i[number-1])
elif 10<=number<20:
    print(j[number-10])
elif number%10==0:
    print(k[number//10-2])
else:
    print( ("%s-%s")%(k[number//10-2],i[number%10-1]) )

德国老哥写的代码:

n=int(input())
a='_ one two three four five six seven eight nine ten eleven twelve thirz fourz fifz sixz sevenz eighz ninez'.replace('z','teen').split()
print([ a[n%20] , f"{ '_ _ twenty thirty forty fifty sixty seventy eighty ninety'.split()[n//10] }" + f"-{a[n%10]}" * (n%10>0) ]  [ n>19 ])

总结

  1. Python replace() 方法:Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
  2. Python格式化字符串f-string概览:差不多可以理解为等效于str.format()函数。
  3. print([1,2][i>0]):用判断的方式可以代替下标0和1,true为1,false为0。
  4. 外国人的思维真的很好,他用“_”补齐列表,代替了下标0,非常聪明值得学习。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值