Python_语法练习

序列练习


在这里插入图片描述

alist=list(map(int,input().split()))
blist=list(map(int,input().split()))
print(list(sorted(set(alist+blist))))

'''
alist=list(map(int,input().split()))
blist=list(map(int,input().split()))
print(sorted(set(alist+blist)))
'''


Point:
sort(可迭代对象)返回list
https://www.cnblogs.com/mswei/p/9283297.html
set(iterable) 返回set类型

在这里插入图片描述

alist=list(map(int,input().split()))
len=len(alist)
a1lsit=alist[0:len//2]#一定要// 整除否则报错 或者int()
a2list=alist[len//2:len] #alist[len//2:]
adict={'1': a1lsit, '2':a2list}
print(adict)

在这里插入图片描述

alist=list(map(int,input().split()))
alist.sort(key=abs)
print(alist)

OR

alist=list(map(int,input().split()))
print(sorted(alist, key=abs))

流程控制

在这里插入图片描述
思路:看成字符串,以便获得位数

a=int(input())
for i in range(153,a+1):
    sum=0
    istr=str(i)
    ilen=len(istr)
    for j in istr:
        sum+=int(j)**ilen
    if sum==i:
        print(i)
    

在这里插入图片描述

n=int(input())
sum=0
for i in range(1,n+1) :
    if i% 7 ==0 :
        continue
    flag=True
    istr=str(i)
    for j in istr:
        if j =='7':
            flag=False
            break
    
    if flag :
        sum+=i**2


print(sum)

在这里插入图片描述

n=int(input())
for i in range(6,n+1) :
    sum=1
    for j in range(2,i):
        if (i % j) == 0 :
            sum=sum+j
            if sum>i:
                 break
    if sum==i :
        print(i)

在这里插入图片描述

n=input()
flag=True
nlen=len(n)
for i in range(0,nlen):
    if n[i]!=n[nlen-1-i]:
        flag=False
        break
if flag:
    print("yes")
else:
    print("no") 

#反转技巧
n=input()
n1=n[::-1]
if n1==n :
    print("yes")
else:
    print("no")

在这里插入图片描述

alist=list(map(int,input().split()))
alen=len(alist)
for i in range(0,alen):
    if alist[i] % 2 ==0:
        alist[i]//=2
    else:
        alist[i]**=2
print(sorted(alist))

在这里插入图片描述

n=int (input())
alist=[2]

for i in range(3,n):
    flag=True
    for k in range(2,i//2+1):
        if i % k ==0:
            flag=False
            break
    if flag :
        alist.append(i)
print(alist)

在这里插入图片描述

n=int (input())
k=1
for i in range(1,n):
    k=(k+1)*2
print(k)

函数

在这里插入图片描述

n=int(input(""))

def fbnq(n):
    a,b,c=1,1,0
    if n==1 or n==2:
        return 1
    
    for i in range(n-2):
        c=a+b
        a,b=b,c
    return c

print(fbnq(n))

在这里插入图片描述
https://blog.csdn.net/byakki/article/details/86607826

在这里插入图片描述




def lcm(num1,num2):
    # 可以先求公约数
    a,b=max(num1,num2),min(num1,num2)
    c=1
    while c!=0:
        c=a % b
        a,b=b,c
    t=num1*num2//a
    return t

num1=int(input(""))
num2=int(input(""))
print(lcm(num1,num2))

#法二
def lcm(num1,num2):
    # 可以先求公约数
    for i in range(max(num1,num2),num1*num2+1,2) :
        if (i % num2 ==0) and (i% num1==0):
            return i


num1=int(input(""))
num2=int(input(""))
print(lcm(num1,num2))

在这里插入图片描述

def bubbleSort(alist):
    alen=len(alist)
    flag=False
    for i in range(alen-1):
        for j in range(alen-1,i,-1):
            if alist[j]<alist[j-1]:
                t=alist[j]
                alist[j]=alist[j-1]
                alist[j-1]=t
                flag=True
        if flag==False:
            return
    return alist
    
alist=list(map(int,input().split()))
print(bubbleSort(alist))

模块

在这里插入图片描述

import datetime
strtime=input("")
listtime=strtime.split("/")
d1=datetime.datetime.strptime(listtime[0]+'/1/1',"%Y/%m/%d")
d2=datetime.datetime.strptime(strtime,'%Y/%m/%d')
print((d2-d1).days+1)

在这里插入图片描述

from math import *
x=int(input())
y=sin(15/180*pi)+(e**x-5*x)/sqrt(x*x+1)-log(3*x)
print('%.10f'%y)

在这里插入图片描述

def is_perfectSquare(n):
    if int(n**0.5)**2==n:
        return True
    else:
        return False

n=1
while True:
    
    if is_perfectSquare(n+150) and is_perfectSquare(n+150+136):
        print(n)
        break
    else:
        n+=1

在这里插入图片描述

n=int(input(""))
t=2*n-1
for k in range(1,t+1):
    if k!=1:
        print("")
    for i in range(1,t+1):
        if k>=1 and k<n and (i==k or i==t-k+1):
            print("X",end='')
        elif k==n and i==k:
            print("X",end='')
        elif  k>n and k<=t and (i==2*n-k or i==t-(2*n-k)+1):
            print("X",end='')
        else:
             print("+",end='')

在这里插入图片描述

n=int(input(""))
m=int(input(""))
alist=list(range(n))
newlist=[]
for i in range(n):
    for j in range(m-1):
        alist.append(alist.pop(0))
    newlist.append(alist.pop(0))
print(newlist)
       

学生成绩排序(类与对象练习)(10分)
题目内容:
设计一个学生类(Student),其中的数据成员有:字符串类型sname表示录入的学生姓名,整型值mscore代表学生的数学成绩,整型值cscore代表学生的语文成绩,整型值escore代表学生的英语成绩。
然后要求根据录入的学生成绩(各不相同),输出总分最高的学生姓名和各科目成绩。

输入格式:
输入分为4个部分:
先输入学生姓名,以空格分隔;然后输入学生的数学成绩(各不相同的正整数),也以空格分隔;再输入学生的语文数学成绩(各不相同的正整数),也以空格分隔。最后输入学生的英语数学成绩(各不相同的正整数),也以空格分隔。学生姓名个数和成绩个数一定会相同。

输出格式:
共一行,为总分最高的学生姓名和各科目成绩,以空格分隔。

输入样例:
jack tom
95 84
90 75
85 90
输出样例:
jack 95 90 85

class Student:
    def __init__(self,sname,mscore,cscore,escore):
        self.sname,self.mscore,self.cscore,self.escore=sname,mscore,cscore,escore
        self.total=+mscore+cscore+escore
    def __lt__(self,other):
        return self.total>other.total
    def __str__(self):
        return "%s %d %d %d"%(self.sname,self.mscore,self.cscore,self.escore)

sname=input().split()
mscore=list(map(int,input().split()))
cscore=list(map(int,input().split()))
escore=list(map(int,input().split()))
slist=[]
for i in range(len(sname)):
    slist.append(Student(sname[i],mscore[i],cscore[i],escore[i]))
slist.sort()
print(slist[0])

在这里插入图片描述

alist=list(map(int,input().split()))
n=int(input())
olist=[]

for k1 in range(len(alist)):
    v1=alist[k1]
    v2=n-v1
    if v2 >0 and v2 in alist:
        k2=alist.index(v2)
        if k2==k1:
             continue
        olist.append(k1)
        olist.append(k2)
        break
print(olist)

在这里插入图片描述

防止append同一个数用 用 set()

x,y,n=int(input()),int(input()),int(input())
def select(x,y,n):
    r=set()
    for i in range(n):
        for j in range(n):
            l=x**i+y**j
            if  l<=n:
                r.add(l)
    return sorted(r)
print(select(x,y,n))

#未用集合、未估测i,j范围(指数函数快于y=x  1^x 除外)
x=int(input())
y=int(input())
n=int(input())
olist=[]
i=0
j=0
pt=0
while True:
    flag=False
    while True:
        t=x**i+y**j
        if  t<=n and pt!=t:
            pt=t
            if t not in olist:
                olist.append(t)
            flag=True
        else :
            break
        i+=1
    if flag:
        i,j=0,j+1
        
    else:
        break

olist.sort()
print(olist)

在这里插入图片描述

# 注意 len<=2 也要print(0) 下面代码正好满足
alist=list(map(int,input().split()))
alist.sort(reverse=True)
for i in range(len(alist)-2):
    if (alist[i+2]+alist[i+1]) > alist[i]:
        print(alist[i+2]+alist[i+1]+alist[i])
        break
else:
    print(0)

一些字符串处理、循环

在这里插入图片描述

list1=list(map(int,input().split()))
list2=list(map(int,input().split()))
list3=list(map(lambda x,y: (x-y)**2,list1,list2))
sum=0
for i in range(len(list3)):
    sum+=list3[i]
print(sum)

在这里插入图片描述

str1=input().lower()
s=''

for i in str1:
    if i.isalpha() or i.isdigit():
        s+=i
if s[::-1]==s :
    print("True")
else:
    print("False")
    ```
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200429163353821.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hnZWVhY2tlcg==,size_16,color_FFFFFF,t_70)
```py
alist=list(map(int,input().split()))
alist.sort()
aset=set()
alen=len(alist)
for i in range(alen-2):
    for j in range(i+1,alen-1):
        for k in range(j+1,alen):
            if alist[i]+alist[j]+alist[k]==0:
                aset.add(( alist[i],alist[j],alist[k]))

在这里插入图片描述

alist=list(map(int,input().split()))
blist=[]
mul=1
flag=False
for a in alist:
    if a==0  and flag==False:# 防止多个零情况 eg 0,1,0,2 
        flag=True
        continue
    mul*=a
for i in range(len(alist)):
    if flag :
        if alist[i]==0 :
            blist.append(mul)
        else :
            blist.append(0)
    else:
        b = mul//alist[i]
        blist.append(b)

print(blist)

在这里插入图片描述


s = input() #暗
alp="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
n = alp.index(s[-1])-alp.index('E')
for t in s:
    print(alp[(alp.index(t)-n) %26],end="")

总结:余数一定为正数
映射

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值