python基础练习题(1)

题目:有四个数字: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)

上面是判断奇数个数的数是否为回文数的通用方法。 

猜你喜欢

转载自blog.csdn.net/knighthood2001/article/details/124524509