1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
ply = 0.08
h = 8848.13*1000
n=0
while 1 :
n += 1
ply *= 2
if ply >= h:
break
print('需要对折', n, '次')
2. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
n = int(input('请输入时间'))
a = 1
b = 0
i = 1
while True: #死循环
a, b = a + b, a #交叉赋值
i += 1 #i = i+1
if i == n: #如果 i==n
break #结束循环
print(2*a,'只')
3. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
print('<-------------->')
n = int(input('请一个正整数'))
m = 1
print(n,'=',sep='',end='')
while 1: #死循环
m += 1 # m = 2
if n%m == 0: #如果n / m能除尽,则m是n的质因数
print(m,sep='',end='') #
n /= m #将 n / 质因数 的值赋给 n
m = 1 # m从1开始重新循环
if n != 1: #如果n != 1
print('*',sep='',end='') #打印 *
else:
break #不符合条件循环结束
print()
4. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
a = m * n #变量3,把n,m的初始值赋给a,
if m < n : #判断 m,n的大小
m,n = n,m #,符合条件m,n换值
while 1: #循环1
m = int(input('输入正整数n:'))
if m<=0: #如果 m<=0
print('-----请重新输入n------')
continue #结束本次循环
else:
n = int(input('输入正整数m:'))
if n<0:
print('-----请从n重新输入------')
continue
else:
m = m%n #算出m%n的余数
if m ==0: #如果余数=0
print('最大公约数:',n) #输出n
break #符合条件循环结束
n = n%m
if n == 0:
print('最大公约数:',m)
break
print('最小公倍数:',int(a / (m+n)))
5. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数
print('=====================')
n = 1 # 变量1,控制 循环1 次数
while n < 1000: # 循环1
n += 1 #变量1,每次循环+1
sum1 = 1 #计算一个数因数和的变量
m = 1 #变量2,每次循环2结束,重新赋值为 1 ,寻找因数
while 1: #循环2
m += 1 #每次循环2,循环一次, m+1
if m == n: # 如果 条件m==n
break #符合条件结束循环
elif n % m ==0: #如果 n%m == 0,则m是n的因数,并且由于上个if语句,m永远!=n
sum1 += m #计算符合条件的m的和
if sum1 == n: #sum1(因数和) == n 就是完数
print(sum1, end=' ')# 符合条件输出sum1
print()
6.输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
# 1 3 5 7 8 10 12 = 31
# 4 6 9 11 = 30
# 2 = 28
# year = int(input('第6题:请输入年:'))
# mon = int(input('第6题:请输入月:'))
# day = int(input('第6题:请输入日:'))
year = 2000
mon = 12
day = 31
date = day
for x in range(1,mon):
if x == 1 or x == 3 or x == 5 or x == 7 or x == 8 or x == 10 :
date += 31
elif x == 4 or x == 6 or x == 9 or x == 11:
date += 30
else:
if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
date += 29
else:
date += 28
print('第6题:',year,'年',mon,'月',day,'日是',year,'的第',date,'天')
7. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
n1 = 9
n2 = 8
n3 = 7
n4 = 6
# n1 = int(input('第7题:请输入数据第一位(0-9):'))
# n2 = int(input('第7题:请输入数据第二位(0-9):'))
# n3 = int(input('第7题:请输入数据第三位(0-9):'))
# n4 = int(input('第7题:请输入数据第四位(0-9):'))
print('第7题:',n1,n2,n3,n4,'加密后的数是:',end = '')
print((n4 + 5) % 10,(n3 + 5) % 10,(n2 + 5) % 10,(n1 + 5) % 10)