1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高(8848.13米)?
time = 0 #定义次数变量
while True:
time += 1 #次数依次增加
sum = int(0.08*2**(time) / 8848130) #求比值
if sum == 1:
print(time,'次') #当比值等于1时,输出次数
break
2. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子, 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
# 2, 2, 4, 6, 10, 16, 26, 42, 68......
n = int(input('请输入月数:'))
month1 = 2 #第一个月兔子的数量
month2 = 2 #第二个月兔子的数量
month = 2 #当 n = 1或2 的时候,兔子的数量
for x in range(2, n): #从第3个月开始依次增加月数
month = month1 + month2 # month等于前两个月相加
month1 = month2
month2 = month #每两个月的往后推,一直到第n个月
print(month,'只') #输出兔子的只数
3. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
n = int(input('请输入一个正整数:'))
k = 1 #k的初始值为1
print(n,'=',sep='',end='') #输出'n='
while True:
k += 1 #k值依次加1
if n % k == 0: #判断k是否为n的因子
print(k,sep='',end='') #如果是打印出k
n /= k #n变成n/k的值
k = 1 #k = 1 从新开始循环
if n != 1: #判断 n 是否等于1
print('x',sep='',end='') #不等于1输出'x'
else: #等于1 ,结束循环
break
print() #换行
4. 输入两个factor正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
m = int(input('请输入一个正整数:'))
n = int(input('请输入第二个正整数,且小于第一个:'))
i = m % n #把m/n的余数附给i
if i == 0: #判断 i 是否等于 0
print('最大公约数为:',n)
print('最小公倍数为:',m)
elif i != 0:
b = n #如果i不等于0,把n的值附给b
while True:
j = b % i #把b/i的余数附给j
a = i #把i值赋給a
b = i
i = j #然后b变为i的值,i变为j的值 ,继续循环
if j == 0:
print('最大公约数为:',a) #当j等于0时结束循环,输出a
break
print('最小公倍数为:',int(m * n / a)) #输出m,n的最小公倍数
5. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数
for x in range(2,1001): #x从2开始依次循环加1,直到x等于1000
n = 0 #n的初始值为0
for i in range(1,x): #i从1开始依次加1,直到i等于x-1
if x % i == 0: #判断i是否为x的因子
n += i #把n+i的值赋給n
if x == n:
print(x) #如果n等于x ,打印出x
6. 输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例, 应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
year = int(input('请输入年份:'))
month = int(input('请输入月份:'))
day = int(input('请输入几日:'))
date = day #把day的值赋給date
for x in range(1, month): #x依次加1,直到x等于month-1
if x == 1 or x == 3 or x == 5 or x == 7 or x == 8 or x == 10:
date += 31 #将month中1,3,5,7,8,10月中的天数加起来
elif x == 4 or x == 6 or x == 9 or x == 11:
date += 30 #将month中4,6,9,11月中的天数加起来
else:
if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0): #判断是否为闰年
date += 29 #如果为闰年,2月为29天
else:
date += 28 #不是闰年,2月为28天
print('本年第',date,'天')
7. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换, 第二位和第三位交换。求输入的四位整数加密后的值
a = int(input('请输入第一位数:'))
b = int(input('请输入第二位数:'))
c = int(input('请输入第三位数:'))
d = int(input('请输入第四位数:'))
a1 = (a + 5) % 10
b1 = (b + 5) % 10
c1 = (c + 5) % 10
d1 = (d + 5) % 10
print(d1,c1,b1,a1,end='')