小白对于几个入门Python题目的思考笔记02

1、分解质因数
脑子有点笨,算出所有质因数放到列表li这一步,就足足花了我五个小时!最后还不知道怎么去掉输出时最后哪个“*”。求大神指教!

# -*- coding: utf-8 -*-
"""
将一个正整数分解质因数。例如:输入90, 打印出 90=2*3*3*5
"""
#
n = int(input("请输入需要分解质因数的合数:"))
x = n
li = []

for i in range(2, n+1):
    while n % i == 0:
        li.append(i)    
        n = n // i    

print("%d = " % x, end = '')

for i in range(li.__len__()):
    print(li[i], "* ", end = '')

这里写图片描述

原来字符串有个join方法,用在这里:

# -*- coding: utf-8 -*-
"""
将一个正整数分解质因数。例如:输入90, 打印出 90=2*3*3*5
"""
#
n = int(input("请输入需要分解质因数的合数:"))
x = n
li = []

for i in range(2, n+1):
    while n % i == 0:
        li.append(i)    
        n = n // i    

print("%d = " % x, end = '')

#这个打印方式无法去掉末尾的“*”
#for i in range(li.__len__()):
#    print(li[i], "* ", end = '')

#将列表里面的所有元素都转换成str类型,这样在print时才能使用join
#避免打印出来的等式末尾有“*”
for i in range(li.__len__()):
    li[i] = str(li[i])

print(" * ".join(li), end = '')

2、题目如下

# -*- coding: utf-8 -*-
"""
题目:求 s=a + aa + aaa + aaaa + aa...a 的 值 , 其 中 a 是 一 个 数 字 。 例 如
2+22+222+2222+22222(此时,共有 5 个数相加 ) ,几个数相加由键盘控制
"""
a = int(input("请输入数字a:"))
n = int(input("请输入n的值:"))

s = 0#第n个数字
n1 = n

#这个while循环用来取出n个a组成的数字,就是a最多的一项
while n > 0:
    s += a * pow(10, n - 1)
    n -= 1

a1 = s
sum = 0

#一个新的while循环用来求出最终加法的结果
while n1 > 0:
    sum = sum + a1 % pow(10, n1)
    n1 -= 1

print("S的值为:%d" % sum)# -*- coding: utf-8 -*-
"""
求 s=a + aa + aaa + aaaa + aa...a 的 值 , 其 中 a 是 一 个 数 字 。 例 如
2+22+222+2222+22222(此时,共有 5 个数相加 ) ,几个数相加由键盘控制
"""
a = int(input("请输入数字a:"))
n = int(input("请输入n的值:"))

s = 0#第n个数字
n1 = n

#这个while循环用来取出n个a组成的数字,就是a最多的一项
while n > 0:
    s += a * pow(10, n - 1)
    n -= 1

a1 = s
sum = 0

#一个新的while循环用来求出最终加法的结果
while n1 > 0:
    sum = sum + a1 % pow(10, n1)
    n1 -= 1

print("S的值为:%d" % sum)

3、完数

# -*- coding: utf-8 -*-
"""
一个数如果恰好等于它的因子之和,这个数就称为“完数” 。例如 6=1+2+3。编
程找出 1000 以内的所有完数
"""

def fun(n):
    s = 0
    for i in range(1, n):
        if n % i == 0:
            s += i#将所有因子都相加
    if s == n:#如果所有因子之和等于本身,就是完数
        return True       

for i in range(1, 1000):
    if fun(i):
        print("%d是完数" % i)

4、球的弹跳次数

# -*- coding: utf-8 -*-
"""
题目:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
第 n 次落地时,共经过多少米?第 n 次反弹多高? 
"""

n = int(input("请输入次数n:"))
N = n
sum = 0
while n - 2 >= 0:
    sum += pow(2, 2 - n)
    n -= 1

s = 100 + 100 * sum

print("第 %d 次反弹时经过 %0.2f 米" % (N, s))
print("第 %d 次反弹 %0.2f 米" % (N, 100 * pow(2, -N)))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值