1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
height = 8e-5 #不能写成8e(-5)
count = 0
while height < 8848.13:
height *= 2
count +=1
print('需要折叠',count,'次')
2. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
"""
分析:
月数 | 1| 2| 3| 4| 5| 6| 7| 8| 9|...
小兔子对数 | 1| 0| 1| 1| 2| 3| 5| 8|13|...
大兔子对数 | 0| 1| 1| 2| 3| 5| 8|13|21|...
总兔子对数 | 1| 1| 2| 3| 5| 8|13|21|34|...
"""
month = int(input('请输入月份:'))
a1 = 2
a2 = 2
a = 2
for _ in range(2,month):
a = a1 + a2
a1,a2 = a2,a
print('第',month,'个月的兔子总数是:',a)
3. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
num = int(input('请输入一个正整数:'))
print(num,end='=')
a = num
while True:
for i in range(2,a):
if a % i == 0:
a /= i # a //= i
a = int(a)
print(i,end='x')
break
else:
print(a)
break
4. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法
a,b = int(input('请输入第一个数:')),int(input('请输入第二个数:'))
greatest = 1
least = 1
if a == b:
greatest = a
least = a
print('最大公约数是:',greatest)
print('最小公倍数是:',least)
else:
while True:
if a > b:
min_num = b
max_num = a
else:
min_num = a
max_num = b
for i in range(2,min_num):
if a % i == 0 and b % i ==0:
greatest *= i
a //= i
b //= i
break
else:
print('最大公约数是:',greatest)
least = greatest * a * b
print('最小公倍数是:',least)
break
5. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数
for a in range(1,1001):
sum1 = 1
for i in range(2,a):
if a % i == 0:
sum1 += i
if sum1 == a:
print(a)
6.输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
year = int(input('请输入年份:'))
is_leap_year = False
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
is_leap_year = True
month = int(input('请输入月份:'))
while month > 12 or month < 1:
month = int(input('月份不存在请重新输入:'))
max_day = 31
day = int(input('请输入日期号数:'))
if month == 4 or month == 6 or month == 9 or month == 11:
max_day = 30
if month == 2 and is_leap_year == True:
max_day = 29
if month == 2 and is_leap_year == False:
max_day = 28
while day > max_day or day < 1:
day = int(input('日期号数不存在,请重新输入:'))
sum_day = 0
for i in range(1,month):
if i == 4 or i == 6 or i == 9 or i == 11:
sum_day += 30
elif i == 2:
sum_day = sum_day + 28 + is_leap_year
else:
sum_day += 31
print('这一天是这一年的第',sum_day + day,'天')
7. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
num = int(input('请输入4位数字:'))
for _ in range(1,5):
new_num = ((num % 10) + 5) % 10
num //= 10
print(new_num,end='')