目录
7. 1, 2, 3, 4几个数字,可以组成多少个互不相同且无重复数字的三位数
1.99乘法表
for i in range(1, 10):
for j in range(1, i+1):
print("%d*%d=%-3d " % (i, j, i*j), end=' ')
print("\n")
"""
print("%2d*%2d=%2d " % (i, j, i*j), end=' ')
结果显示
1* 1= 1
2* 1= 2 2* 2= 4
3* 1= 3 3* 2= 6 3* 3= 9
4* 1= 4 4* 2= 8 4* 3=12 4* 4=16
5* 1= 5 5* 2=10 5* 3=15 5* 4=20 5* 5=25
6* 1= 6 6* 2=12 6* 3=18 6* 4=24 6* 5=30 6* 6=36
7* 1= 7 7* 2=14 7* 3=21 7* 4=28 7* 5=35 7* 6=42 7* 7=49
8* 1= 8 8* 2=16 8* 3=24 8* 4=32 8* 5=40 8* 6=48 8* 7=56 8* 8=64
9* 1= 9 9* 2=18 9* 3=27 9* 4=36 9* 5=45 9* 6=54 9* 7=63 9* 8=72 9* 9=81
对齐方式奇怪,可改为
print("%d*%d=%-3d " % (i, j, i*j), end=' ')
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
"""
2.输入某年某月某天,判断这一天是这年的第几天
year = int(input("请输入年份: "))
month = int(input("请输入月份: "))
day = int(input("请输入天: "))
sum = 0
months = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334)
# 先判断输入的月份是否合理
if 0 < month <= 12:
sum += months[month - 1]
else:
print("月份输入错误")
sum += day
# 判断年份是平年还是闰年,能被4或400、100整除的年份为闰年,月份大于2月才需要加一
if (year % 4 == 0) or ((year % 400 == 0) and (year % 100 == 0)) and (month > 2):
sum += 1
print("您输入的日期为%d年的第%d天" % (year, sum))
3.输出斐波那契数列
斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……
这个数列从第三项开始,每一项都等于前两项之和。
在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)
# 方法1:利用数值交换的思想
a = 1
b = 0
c = 0
for i in range(11):
print("%5d " % c, end=' ')
c = a + b
a = b
b = c
print("\n")
# 方法2: 利用python特有的数值交换方式
def fib2(n):
m, k = 1, 1
for i in range(n - 1):
m, k = k, m + k
return m
# 输出了第10个斐波那契数列
print(fib2(10))
print("\n")
# 方法3:使用递归调用,递归调用两大特点为1)自己调用自己;2)有条件,否则易死循环(该程序为n)
def fib3(n):
if n == 1 or n == 2:
return 1
return fib3(n - 1) + fib3(n - 2)
# 输出了第10个斐波那契数列
print(fib3(10))
print("\n")
# 方法4
def fib4(n):
if n == 1:
return [1]
if n == 2:
return [1, 1]
fibs = [1, 1]
for i in range(2, n):
fibs.append(fibs[-1] + fibs[-2])
return fibs
# 输出前 10 个斐波那契数列
print(fib4(10))
4.将一个表的数据复制到另一个表中
a = [1, 2, 3]
b = a[:]
print(b)
5.暂停一秒输出,并格式化当前时间
import time
# 方法1
L = [1, 2, 3]
for i in range(len(L)):
print(L[i])
time.sleep(1)
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))) # 格式化输出当前时间
# 方法2
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())))
补充:
#取得当前时间戳
import time
print(time.time())
#格式化时间戳为标准格式,用time.localtime()方法,作用是格式化时间戳为本地的时间,用time.strftime()方法,把刚才的一大串信息格式化。
print(time.strftime('%Y.%m.%d',time.localtime(time.time())))
#获取30天前的时间(通过加减秒数来获取现在或者未来某个时间点)
print(time.strftime('%Y.%m.%d',time.localtime(time.time()-2592000)))
6.古典问题:兔子总数
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
f1 = 1
f2 = 1
for i in range(1, 22):
print('%12ld %12ld' % (f1, f2), end=' ')
if (i % 3) == 0:
print('')
f1 = f1 + f2
f2 = f1 + f2
7. 1, 2, 3, 4几个数字,可以组成多少个互不相同且无重复数字的三位数
#方法1
count_num = 0
for i in range(1, 5):
for j in range(1, 5):
for k in range(1, 5):
if (i != j) and (i != k) and (j != k):
count_num += 1
# print(i, j, k)
print(count_num)
#方法2
count_num1 = 0
num_list = [3, 5, 7, 9] #可用于随机数
for i in num_list:
for j in num_list:
for k in num_list:
if (i != j) and (i != k) and (j != k):
count_num1 += 1
# print(i, j, k)
print(count_num1)
8.用户输入三个数并进行排序
I = []
for i in range(3):
x = int(input('integer:\n'))
I.append(x)
I.sort()
print(I)
9. 判断101-200之间有多少个素数,并输出所有素数
n = 0
for i in range(101, 201):
for j in range(2, i):
if (i % j == 0) and (j < i):
m = 0
break
else:
m = 1
if m == 1:
n += 1
print(i)
print("101到200之间素数有%d个" % n)
"""
有问题代码:
n = 0
for i in range(101, 201):
for j in range(2, i):
if (i % j == 0) and (j < i):
break
else:
n += 1
print(i)
print("101到200之间素数有%d个" % n)
原因分析
在循环中执行 n += 1 ,会使得i值重复多次判断并输出
"""
10.打印出所有的"水仙花数"
所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
# 例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
import math
for n in range(100, 1000):
i = n // 100
j = (n - (i * 100)) // 10
k = n % 10
if n == pow(i, 3) + pow(j, 3) + pow(k, 3):
print(n)
"""
// 地板除法(向下取整除),它会返回整除结果的整数部分,取整
% 取模运算,返回除法的余数,取余
pow() 求取数值的多少次方
"""