16.人民币金额打印
银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序。 在中文大写方式中,0到10以及100、1000、10000被依次表示为: 零 壹 贰 叁 肆 伍 陆 柒 捌 玖 拾 佰 仟 万 以下的例子示范了阿拉伯数字到人民币大写的转换规则: 1 壹圆 11 壹拾壹圆 111 壹佰壹拾壹圆 101 壹佰零壹圆 1000 负壹仟圆 1234567 壹佰贰拾叁万肆仟伍佰陆拾柒圆 现在给你一个整数a(|a|<100000000), 请你打印出人民币大写表示 例如:a = 90901001 则输出:玖仟零玖拾万壹仟零壹圆
a = 90901001 digit = [u'零',u'壹',u'贰',u'叁',u'肆',u'伍',u'陆',u'柒',u'捌',u'玖'] weight = [u'圆',u'拾',u'佰',u'仟',u'万',u'拾',u'佰',u'仟'] Z = [(u'零仟',u'零佰',u'零拾',u'零零零',u'零零',u'零万',u'零圆'),(u'零',u'零',u'零',u'零',u'零',u'万',u'圆')] num = str(abs(a)) #abs()绝对值 str()整数转换成字符串 s = u'负' if a<0 else '' for i,x in enumerate(num): #enumerate() s += digit[int(x)] + weight[len(num)-i-1] for z,v in zip(Z[0],Z[1]): #zip() s = s.replace(z,v) #str.replace(old,new) print(u"壹圆") if a==0 else print(s)17.公约数的个数
给你两个正整数a,b,输出它们公约数的个数。 例如:a = 24,b = 36 则输出:6
a = 24 b = 36 print(len([x for x in range(1,min(a,b)+1) if a%x==0 and b%x==0]))18.逆解最大公约数与最小公倍数
我们经常遇到的问题是给你两个数,要你求最大公约数和最小公倍数。今天我们反其道而行之, 给你两个数a和b,计算出它们分别是哪两个数的最大公约数和最小公倍数。输出这两个数,小的在前,大的在后,以空格隔开。若有多组解,输出它们之和最小的那组。 注:所给数据都有解,不用考虑无解的情况。 例如:a=3, b = 60 则输出:12 15
a = 3 b = 60 x = [x for x in range(1,max(a,b)+1) if max(a,b) % x == 0 ] y = [int(a*b/i) for i in x] z = [(x0,y0) for x0,y0 in zip(x,y)] #zip() 返回元组组成的对象 ans = sorted(z,key=sum)[0] #sorted(iterable,key=None,reverse=False) print('%s %s' % (min(ans),max(ans))) #没有考虑无解以及a=1的情况19.单身情歌
给你一个字符串a,如果其中包含"LOVE"(love不区分大小写)则输出LOVE,否则输出SINGLE 例如:a = “OurWorldIsFullOfLOVE” 则输出:LOVE
a = "OurWorldIsFullOfLOVE" print("LOVE" if "love" in a.lower() else "SINGLE")20.信息加密
给你个小写英文字符串a和一个非负数b(0<=b<26), 将a中的每个小写字符替换成字母表中比它大b的字母。这里将字母表的z和a相连,如果超过了z就回到了a 例如:a=“cagy”, b=3, 则输出 :fdjb
①
a = "cagy" b = 3 print(''.join([chr(ord('a')+(ord(x)-ord('a')+b)%26) for x in a]))②
a = "cagy" b = 3 t = "" for c in a: if 'a' <=c <= 'z': t += chr(ord('a') + (ord(c)-ord('a') + b) % 26) #密文字符 = (原文字符 + b) % 26 else: t += c print(t) #chr(u) u为Unicode编码,返回其对应的字符 #ord(x) x为字符,返回其对应的Unicode编码21.回文子串
给你一个字符串a和一个正整数n,判断a中是否存在长度为n的回文子串。如果存在,则输出YES,否则输出NO。 回文串的定义:记串str逆序之后的字符串是str1,若str=str1,则称str是回文串,如"abcba".
a = "adeda" #字符串a n = 5 #长度为n的回文子串 result = "NO" for i in range(len(a)): if (i+n<=len(a)): str = a[i:i+n] str1 = str[::-1] if (str==str1): result = "YES" break print(result)22.时间就是金钱
给你两个时间st和et(00:00:00<=st <= et<=23:59:59), 请你给出这两个时间间隔的秒数。 如:st=“00:00:00”, et=“00:00:10”, 则输出10.
①
st="00:56:00" et="01:00:10" a = st.split(":") b = et.split(":") c = [] for i in range(3): c.append(int(b[i])-int(a[i])) d=c[0]*3600+c[1]*60+c[2] print(d)②
st="00:56:00" et="01:00:10" import datetime a = datetime.datetime.strptime(et,"%H:%M:%S") b = datetime.datetime.strptime(st,"%H:%M:%S") print((a-b).seconds)23.365 Or 366?
一年有多少天,这是个大问题,很值得思考。现在给你一个年份year(year为四位数字的字符串,如"2008",“0012”),你输出这一年的天数。如year=“2013”, 则输出365。
①
year = "2019" year1 = int(year) if year1 % 4 == 0 and year1 % 100 != 0 or year1 %400 == 0: print(366) else: print(365)②
print(366 if int(year)%4==0 and int(year)%100!=0 or int(year)%400==0 else 365)③
import calendar print(366 if calendar.isleap(int(year)) else 365) #calendar.isleap(year) 闰年返回True,否则False24.一马当先
下过象棋的人都知道,马只能走’日’字形(包括旋转90°的日),现在想象一下,给你一个n行m列网格棋盘, 棋盘的左下角有一匹马,请你计算至少需要几步可以将它移动到棋盘的右上角,若无法走到,则输出-1. 如n=1,m=2,则至少需要1步;若n=1,m=3,则输出-1。
25.格式化时间