题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?for i in range(1, 5): for j in range(1, 5): for k in range(1, 5): if(i != k) and (i != j) and (j != k): print(i, j, k)
解析:因为是三位数,即个位、十位、百位。因此我们可以采用三次循环,在最内层判断数字是否相同即可。
题目:输入某年某月某日,判断这一天是这一年的第几天?year = int(input('year:\n')) month = int(input('month:\n')) day = int(input('day:\n')) months = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334) if 0 < month <= 12: sum = months[month - 1] else: print('data error') sum += day leap = 0 if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)): leap = 1 if (leap == 1) and (month > 2): sum += 1 print('it is the %dth day.' % sum)
解析:首先输入年月日,这里需要注意,month整体需要往前推。最后两个if语句判断是否为闰年以及是否是二月份以后,如果是,则天数需要多加一天。
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
l = [] for i in range(3): x = int(input('integer:')) l.append(x) l.sort() print(l)
解析:对于这类数字排序题,可以将其放入列表中,利用python的sort()函数进行升序排序,利用python的reverse()进行降序排序。
注意:sort()和sorted()的区别,sort()函数是对列表进行就地排序,改变了原有序列,且不返回任何值,而sorted()函数会不改变原有序列,返回一个排序列表,具体可以看以下代码。
a = [2, 4, 6, 4, 3, 5]
a.sort()
print(a)
# [2, 3, 4, 4, 5, 6]
b = a.sort()
print(b)
# None
c = sorted(a)
print(c)
# [2, 3, 4, 4, 5, 6]
题目:输出 9*9 乘法口诀表。for i in range(1, 10): print() for j in range(1, i + 1): print("%d*%d=%d" % (i, j, i * j), end=" ")
解析:
①第一个print()如果没有,其最终输出结果全部在一行中显示。
②在python中%d属于字符串格式化输出的内容,其表示整数。
③print()函数中end参数默认为\n,即换行。如果没有这个,显示结果如下,即每打印一次乘法公式,就换行。
题目:暂停一秒输出,并格式化当前时间。import time print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) # 暂停一秒 time.sleep(1) print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) # 2022-05-01 12:06:56 # 2022-05-01 12:06:57
解析:time.strftime(format[,t])可以转换localtime()返回的时间到由format参数指定的字符串。
%Y表示四位数的年份表示,%y表示两位数的年份表示;%m表示月份;%d表示月内中的一天;%H表示24小时制的小时数,%I表示12小时制的小时数;%M表示分钟数 ;%S表示秒。
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。s = input('请输入一个字符串:\n') letters = 0 space = 0 digit = 0 others = 0 for c in s: if c.isalpha(): letters += 1 elif c.isspace(): space += 1 elif c.isdigit(): digit += 1 else: others += 1 print ('char = %d,space = %d,digit = %d,others = %d' % (letters, space, digit, others))
解析:主要使用现有的函数来判断是否为英文字母、空格、数字 。
题目:求1+2!+3!+...+20!的和。n = 0 s = 0 t = 1 for n in range(1, 21): t *= n s += t print('1! + 2! + 3! + ... + 20! = %d' % s)
解析:求阶乘之和都可以用上面的代码,简单易懂。
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。a = int(input("请输入一个数字:\n")) x = str(a) flag = True for i in range(len(x) // 2): if x[i] != x[-i - 1]: flag = False break if flag: print("%d 是一个回文数!" % a) else: print("%d 不是一个回文数!" % a)
上面是判断奇数个数的数是否为回文数的通用方法。