PythonTest100例-16~22

16.#输出指定格式的日期

import  datetime
if __name__ == '__main__':
    print(datetime.date.today().strftime('%d/%m/%Y'))

题解思路:获取当前时间并将获取字符串格式化为指定格式

17.#题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

str=input('输入一行字符:')
letters=0
space=0
number=0
other=0
for s in str:
   if str.isalpha():
       letters+=1
   elif str.isnumeric():
       number+=1
   elif str.isspace():
       space+=1
   else:
       other+=1
print(letters,number,space,other)

题解思路:调用string内置函数isalpha()统计字母,isnumeric()统计数字,isspace()统计空格。

18.#求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

a=int(input('请输入a='))
n=int(input('请输入n='))
m=0
s=0
for i in range(n):
    m=m+(10**i)*a
    s=s+m
print(s)

题解思路:遍历n个数相加,数学公式:m=m+(10^i)*a

19.#题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。


for i in range(2,1001):
    Yinzi = []
    for j in range(1,i):
        if i%j==0:
            Yinzi.append(j)

    if i == sum(Yinzi):
        print(i)

题解思路:将能整除整数n的因子添加到列表中,列表求和判断是否与整数n相等

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

def height(n):
    h=100
    sum=0
    res=h/(2**n)
    #sum+=res
    print(res,sum)
    return n

def height_sum():
    h=100
    lst=[]
    for i in range(0,10+1):
        lst.append(h/(2**i))
    print(sum(lst))

height(10)
height_sum()

题解思路:第一个函数判断第10次能反弹多高,每次落地反跳高度作为新高度,循环9次则为第10次反弹高度。第二个函数判断10次反弹总共经过多少米,将每次反弹高度添加到列表中,列表求和。

21.#题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾, #又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。 #以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

x1=1

for i in range(9):
    x2 = (x1 + 1) * 2
    x1 = x2
print(x1)

题解思路:倒推,第10天剩一个加上前一天吃的一半多一个,循环9次则为第一天摘的桃子。

22.#题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。 已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

m=['a','b','c']
n=['x','y','z']
t=[]
for i in m:
    for g in n:
        t.append(i)
        t.append(g)
        if  t[0]=='a' and t[1]!='x'  :
            print(t[0],t[1])
        if  t[0]=='b':
            print(t[0],t[1])
        if t[0]=='c'and t[1]!='x'and t[1]!='z':
            print(t[0],t[1])
        t=[]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值