python小题目5

(1)输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
(2)求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),相加的数字个数将由用户通过键盘输入来指定。
(3)一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3。编程找出1000以内的所有完数。

第一题:

#输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

a = input("请输入字母,空格,数字或其它字符:")
zimu = 0
kongge = 0
shuzi = 0
qita = 0
for i in a:
    if i == ' ':
        kongge = kongge + 1
    elif i.isdigit():
        shuzi = shuzi + 1
    elif i.isalpha():    #因为这个函数会把汉字也判断为字母,所以加两个判断把汉字去掉
        if i.islower():
            zimu = zimu + 1
        elif i.isupper():
            zimu = zimu + 1
        else:
            qita = qita + 1
    else:
        qita = qita + 1
print("输入的字符串为%s,空格数量为%d个,数字数量为%d个,字母数量为%d个,其它字符为%d个" %(a,kongge,shuzi,zimu,qita))

第二题:

#求s=a+aa+aaa+aaaa+aa......a的值,其中a是一个数字。
# 例如2+22+222+2222+22222(此时共有5个数相加),相加的数字个数将由用户通过键盘输入来指定。

a = input("请输入要相加的数字(1-9哦):"),int(input("请输入要想加的个数:"))  
b = []                            
sum = 0                             
for i in range(1, a[1] + 1):       
    b.append(a[0] * i)      #python中*这个乘法运算符,实现两个数相乘或者返回一个被重复若干次的数               
    sum += int(a[0] * i)               
print(f"{
      
      sum} = {
      
      ' + '.join(b)}") 

第三题:

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

for i in range(2,1001):
    a = []
    for j in range(1,i):
        if i % j == 0:
            a.append(j)
    if sum(a) == i:
        print(f"{
      
      i} = {
      
      ' + '.join(map(str,a))}")

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43635067/article/details/128818914