python作业(一)

 1.实现从n个a减到1个a(eg:aaaaa-aaaa-aaa-aa-a)

'''
输入两个整数a(大于等于1且小于等于9)和n(大于等于1且小于等于80),编程求得并输出下面等式的值:
'''
s=input()
ns=s.split()
a=ns[0]
n=ns[1]
lst=[]
for i in range(1,int(n)+1):
    lst.append(a*i)
lst.reverse()
sum=int(lst[0])
for j in lst[1:]:
    sum-=int(j)
print(sum) 

2.以列表构建列表,列表中的数字由它所处的位置决定

'''
编写一个程序,以2位数字X,Y作为输入,生成一个二维列表。列表的第i行和第j列中的元素值是i*j。
注意:i= 0,1 . .,X - 1;    j = 0, 1,..,Y-1
'''
x,y=eval(input())
lst=[]
lst1=[]
for i in range(x):
    for j in range(y):
        lst1.append(i*j)    
    lst.append(lst1)
    lst1=[]
print(lst) 

3.判读是否符合电话号码的格式

'''
假设电话号码的模式为:3个数字,一个短横线,4个数字,一个短横线和4个数字。如:186-7123-4567。编写程序,用以检查输入的字符串是否匹配电话号码模式,若匹配返回True,否则返回False
'''
s=input()
n1=s[0:3]
n2=s[3]
n3=s[4:8]
n4=s[8]
n5=s[9:13]
if n1.isdigit() and n2=="-" and n3.isdigit() and n4=="-" and n5.isdigit():
    print(True)
else:
    print(False)

4.哥德巴赫猜想

'''
证明在偶数n以内,歌德巴赫猜想是成立的。歌德巴赫猜想是:任何一个充分大的偶数都可以表示为两个素数之和。例如,4=2+2   6=3+3   8=3+5  50=3+47
'''
def is_sushu(a):
    for i in range(2,a):
        if a % i == 0:
            return False
    else:
        return True
n=int(input())
for i in range(4,n+1,2):
    for j in range(2,i):
        if is_sushu(j)==True and is_sushu(i-j)==True and j <= (i-j):
            print(f"{i}={j}+{i-j}")
            break

5.亲密数(注意看亲密数的条件,a的因子之和是b,b的因子之和是a,那么称a与b是亲密数,且a!=b)

'''
求整数n以内(含n)的全部亲密数。
说明:如果正整数A的全部因子(包括1,不包括A本身)之和等于B;且正整数B的全部因子(包括1,不包括B本身)之和等于A,A不等于B,则将正整数A和B称为亲密数。
1不和其他数形成亲密数。
编写函数sumElem(),实现统计一个数字的因子之和(包括1,不包括A本身)
'''
def sumElem(a):
    sum=1
    for i in range(2,a):
        if a % i == 0:
            sum+=i
    return sum    
def is_sushu(a):
    for i in range(2,a):
        if a % i == 0:
            return False
    else:
        return True    
n=int(input())
d={}
temp=[x for x in range(4,n+1) if is_sushu(x)==False]
for j in temp:
    k=sumElem(j)
    if j==k or k not in temp:
        continue 
    if sumElem(k)==j and j < k :
        d[j]=k
        temp.remove(j)       
for m,n in d.items():
    print(m,n)

6.统计任一一串字符串中的单词个数,且输出单词(一开始以为要用双指针的思想,发现第一个指针的位置老是要动,所以只好引入一个k,来记住单词的长度,双指针的思想不知道在这里能不能用,如果有大佬看到的话,希望大佬能够指点一下)

'''
输入任意一行字符串,含有数字和非数字字符以及空格等,如:
df23A?45d0@
输出其中数字和字母出现的个数
如果将其中所有连续出现的字母视为一个单词,要求统计在该字符串中共有多少个单词,并将这些数依次输出。
'''
s=input()
sz=0
zm=0
dc=0
ns=""
for i in s:
    if i.isnumeric():
        sz+=1
    elif i.isalpha():
        zm+=1
n=0    
k=0
n2=0        
while n<= (len(s)-1):
    if s[n].isalpha():
        k=k+1
        n+=1
    else:
        if s[n-1].isalpha():
            n2=n    
            ns=ns+s[n2-k:n2]+" " 
            n+=1
            dc+=1
            k=0
        else:
            n+=1            
if s[len(s)-1].isalpha():
    dc+=1
    ns=ns+s[n-k:]
print(sz)
print(zm)
print(dc)
if dc>0:
    print(ns)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值