day5- homework

1.读程序

numbers=1  
for i in range(0,20):      
    numbers*=2  
print(numbers)  

"""
numbers = 1
i = (0,1,2,...19)
i = 0   numbers *= 2  numbers = numbers*2  numbers = 1*2 = 2 = 2**1
i = 1   numbers *= 2  numbers = numbers*2  numbers = 2*2 = 2**2
i = 2   numbers *= 2  numbers = numbers*2  numbers = 2*2*2 = 2**3
i = 3   numbers *= 2  numbers = numbers*2  numbers = 2*2*2*2 = 2**4
...
功能: 计算2的20次方的值
"""


summation=0        # 声明一个变量,并且赋值为0
num=1   
while num<=100:    
    if (num%3==0 or num%7==0) and num%21!=0:        
        summation += 1    
    num+=1 
print(summation) 

"""
summation = 0
num = 1
1 <= 100  (1%3==0 or 1%7 ==0) and 1 % 21 !=0    False   num = 2
2 <= 100  (2%3==0 or 2%7 ==0) and 2 % 21 !=0    False   num = 3
3 <= 100  (3%3==0 or 3%7 ==0) and 3 % 21 !=0)   True   summation += 1   summation=1  num = 4
4 <= 100
...


统计1-100中能够被3或者7整除,但是不能同时被3和7整除的数的个数
"""  


# 1. 求斐波那契数列中第n个数的值:(0),1,1,2,3,5,8,13,21,34, 55...
# 规律: 从第三个数开始,后面每个数结果都是前两个数的和  
n = 10     # 表示最终要求第几个数的值
# n1 + n2 = current
n1 = 0     
n2 = 1
current = 1
# 从第2个数开始求, x表示当前是第几个数
for x in range(2, n+1):
    # 根据前两个数的值,计算出当前值
    current = n1 + n2
    # 挪一次, 为了下次循环的时候求下一个值
    n1 = n2
    n2 = current

print(current)  


# 2. 判断101-200之间有多少个素数,并输出所有素数。
# 什么是素数(质数): 除了1和它本身,不能被其他的数整除,这种数就是素数  
# 先将101-200之间所有的整除,一个一个的取出来
# =======方法一:
count = 0
for num in range(101, 201):
    # 判断是否是素数
    # x的范围是2~num1
    for x in range(2, num):
        if num % x == 0:
            # print(num, '不是素数')
            # 只要在2~num-1之间找到一个能被num整除的数,就说明num不是素数
            break
    else:
        count += 1
        print(num, '是素数')

print('101-200之间素数有:',count)


# =======方法二:
print('=================================')
for num in range(101, 201):
    isprime = True    # 取一个数就假设这个数是素数
    for x in range(2, num):
        if num % x == 0:
            isprime = False     # 当在2~num-1之间找到了一个能够被num整除的数,就说明假设不成立
            break

    # 循环结束再判断之前的假设是否成立
    if isprime == True:
        print(num,'是素数')   


# 3. 打印出所有的⽔水仙花数,所谓⽔水仙花数是指一个三位数,其各位数字⽴立⽅方和等于该数本身。例例如:153是
# 一个⽔水仙花数,因为153 = 1^3 + 5^3 + 3^3  
for num in  range(100, 1000):
    ge_wei = num % 10  
    shi_wei = num // 10 % 10
    bai_wei = num // 100
    if ge_wei ** 3 + shi_wei ** 3 + bai_wei ** 3 == num:
        print(num)




# 4. 有⼀一分数序列列:(1/1),2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列列的第20个分数
# 后面的分数的分母 == 前一个分数的分子   后面的分数的分子 = 前一个分数的分母 + 分子
fen_zi = 1
fen_mu = 1
for x in range(1, 10+1):
    # temp = fen_zi
    # fen_zi = fen_mu + fen_zi
    # fen_mu = temp
    fen_zi, fen_mu = fen_mu + fen_zi, fen_zi

print(fen_zi, '/', fen_mu)



# ==================补充=================
# python中交换两个数
a = 10
b = 20
a,b = b,a
print(a, b)   # 20 10


# 5.给⼀一个正整数,要求:1、求它是⼏几位数 2.逆序打印出各位数字
# 234   23  2  0
# 1234  123  12   1  0 
# 规律: 一个整数是几位数,就看这个数整除10,除几次后会变成0
num = int(input('请输入一个整数:'))
num2 = num
length = 0
while True:
    num //= 10
    length += 1
    if num == 0:
        break
print(length)

# 1234   4(123)  3(12)  2(1)  1(0)
for _ in range(length):
    print(num2%10,end='')
    num2 //= 10

print()



# ==========补充: print的定制=========
# print可以在需要输出的内容的最后,添加end和sep来定制一个print打印完成后默认输出的内容,
# 和一个print打印多个内容的时候多个内容之间的间隔
print(1111, end=' ')
print(2222, end='+')
print(3333, end='%')
print()
# 1111 2222+3333%

print(10, 23, 45,sep='+')
print(12, 34, 56)

print('abc', 'bbb', end='00000', sep='=======')

补充: print的定制

print可以在需要输出的内容的最后,添加end和sep来定制一个print打印完成后默认输出的内容,
和一个print打印多个内容的时候多个内容之间的间隔

end = ' ' 只能在print(里面)是后面加什么符号,打印的内容后面就是什么,不需要符号就是空格,目的让打印的内容在一行显示而不是上下行

sep = ' ’ 打印中间的间隔内容

补充

python中交换两个数

a = 10
b = 20
a,b = b,a
print(a, b)   # 20 10

你可能感兴趣的:(day5- homework)