python练习进阶1

一、判断以下哪些不能作为标识符

    A、a
    B、¥a
    C、_12
    D、$a@12
    E、false
    F、False

二、有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几?

nums= []
for i in range(9999,1001,-1):
    g=i%10
    s=6
    b=3
    q=i//1000
    n=g+s*10+b*100+q*1000
    if n%2==0 and n%3==0:
        nums.append(n)
print(f"最大值:{max(nums)}")       
print(f"最小值:{min(nums)}")
    

三、编程求一个四位自然数ABCD,它乘以A后变成DCBA
 

for i in range(1000,9999,1):
    g=(i%1000)%100%10
    s=(i%1000)%100//10
    b=i%1000//100
    q=i//1000  
    n=g*1000+s*100+b*10+q
    
    if i*q==n:
        print(i,"*",q,"=",n)

 四、用户输入两个数a、b。如果a能被b整除或a加b大于1000,则输出a;否则输出b。

a =int(input("输入数a: "))
b =int(input("输入数b: "))
if b%a==0 or a+b>1000:
    print(a)
else:
    print(b)

 

五、请输入一个数,判断这个数是偶数还是奇数,如果使用偶数,请判断从1到该数是3的倍数有哪些,如果是奇数,请判断从1到该数是5的倍数有哪些

#判断奇偶进阶

n =int(input("输入一个数:"))
if n%2==0:
    print("是偶数,1到该数是3的倍数都有")
    for i in range(n):
        if i%3==0:
            print(i)
            
else:
    print("是奇数,1到该数是5的倍数都有")
    for i in range(n):
        if i%5==0:
            print(i)

六、输入三边的长度,求三角形的面积和周长(海伦公式)

import math
a =float(input("输入数a: "))
b =float(input("输入数b: "))
c =float(input("输入数a: "))
while a+b<c or a+c<b or b+c<a:
    print("三角形不成立")
    a =float(input("输入数a: "))
    b =float(input("输入数b: "))
    c =float(input("输入数a: "))
    
p = (a+b+c)/2
s = math.sqrt(p*(p-a)*(p-b)*(p-c))
print("三角形的面积是",s)
print("三角形的周长是",p*2)

七、鸡兔同笼 ,从上面看有35个头,从下面看有94只脚,请问鸡有几只,兔有几只?

a =int(input("输入头数a: "))
b =int(input("输入脚数b: "))
t=(b-(a*2))//2
j=a-t
print("鸡的数量",j)
print("兔的数量",t)

八、猜数字,random

import random
print("猜数字游戏:")
m = random.randint(1,10)
while True:
    n =int(input("请输入你猜测的数字:"))
    if n < m :
        print("数小了")
    elif n > m :
        print("数大了")
    else :
        print("恭喜您猜对了")
        break

九、猜拳游戏

import random
print("石头、剪刀、布的游戏")
#m=random.randint(1,3)
list =[1,2,3]
m=random.choice(list)
n =int(input("请输入你的选择:"
             "石头:1,"
             "剪刀:2,"
             "布:3\n"))
if n!=1 or n!=2 or n!=3:
    print("请输入1,2,3")
    n =int(input("请输入你的选择:"
             "石头:1,"
             "剪刀:2,"
             "布:3\n"))
print("计算机选择的是:",m)
if m==n:
    print("平局")
elif m!=n:
    if m-n==1:
        print("你赢了")
    else:
        print("你输了")

十、验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.

def check(num):
    count = 0
    back_num =num
    while num!=0:
        temp =num%10
        num//=10
        count+=temp
    if(back_num-count)%9==0:
        return True
    else:
        return False
print(check(102354))

十一、判断单个数是否为质数

#单个
def num_put(n):
    flag=True
    if n==0 or n== 1: 
        print(f"{n}不是质数也不是合数")       
        return 0
    for i in range(2,n//2+1):   
        if n%(i)==0:
            flag=False
            break
    if flag : 
        print(f"{n}是质数")   
    else:
        print(f"{n}是合数")  
num_put(11)

十二、判断范围内的质数

#范围
def num_puts(x,y):
    print("其中的质数都有:")
    count=[]  
    for j in range(x,y):
        flag=True
        if j==0 or j== 1:       
            flag=False
        for i in range(2,j//2+1):    
            if j%(i)==0:
                flag=False
                break
        if flag==True : 
            count.append(j)
    print(count)   
     

num_puts(50,100)

十三、计算1-y的质数和

def num_puts(y):
    print("其中的质数都有:")
    count=[]  
    for j in range(1,y):
        flag=True
        if j==0 or j== 1:       
            flag=False
        for i in range(2,j//2+1):    
            if j%(i)==0:
                flag=False
                break
        if flag==True : 
            count.append(j)
    print(count)   
    sum=0
    for i in count:
            sum+=i
            
    print("1-y的质数和",sum)


num_puts(100)

十四、如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数".


def num_puts(x,y):
    print("其中的质数都有:")
    count=[]  
    for j in range(x,y):
        flag=True
        if j==0 or j== 1:
            flag=False               
        for i in range(2,j//2+1):    
            if j%(i)==0:
                flag=False
                break
        if flag : 
            count.append(j)
        else:
            pass
    print(count)
    print("其中的孪生数都有:")
    i=1
    while i<len(count):
        if count[i]-count[i-1]==2:
            print(str({count[i],count[i-1]}))
        i+=1

num_puts(0,100)

十五、水仙花

list1 = []
for a in range(100, 1000):
    if (a % 10) ** 3 + (a // 10 % 10) ** 3 + (a // 100) ** 3 == a:
        list1.append(a)
print(list1)

 

十六、一个五位数,若在它的后面写上一个7,得到一个六位数A,若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此五位数.

for i in range(10000,100000):
    A=i*10+7
    B=700000+i
    if B/A==5:
        print(i)

十七、取硬币,有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币 [10, 8, 5, 3, 27, 99]

coin=[10, 8, 5, 3, 27, 99]
x=0
for i in coin:
	if i%2==0:
		x+=i//2
	else:
			 x+=i//2+1
print("最少%s"%(x)+"次可以拿完硬币")

 十八、十进制转换为二进制,并统计1的数量

def change(num):
    count=[]
    while num!=0:
        temp = num%2
        num //= 2
        count.append(temp)
    count.reverse()
    print("二进制结果:",count)
    x=0
    for i in count:
        if i==1:           
            x+=1
    print("其中1的数量:",x)

    
change(9)

 十九、计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1.......)

pi = 0
N = 100
for k in range(N):

    pi += 1/pow(16,k)*( \
        4/(8*k+1) - 2/(8*k+4) - \
        1/(8*k+5) - 1/(8*k+6))
print("圆周率值为:{}".format(pi))

二十、给数列排序


list=[9,2,3,1,4,6,5,7,8,0]
def section_sort1(list):
    n = len(list)
    # 定义外围循环次数
    for j in range(n - 1):
        # 定义min_index最小值的索引为j,目的找出最小值
        min_index = j
        # cur下标移动的范围,比较次数的范围限定
        for i in range(j + 1, n):
            # 元素比较,找出最小的值对应的索引
            if list[i] < list[min_index]:
                # 移动到最小元素的位置
                min_index = i
 
        # 保证最新的min_index不在无序队列的首位,那么就将它和无序队列的首位替换
        if min_index != j:
            list[j], list[min_index] = list[min_index], list[j]

print(list)
section_sort1(list)
print("排序后:",list)

 

 二十一、合并两个有序数组,合并后还是有序列表

list1=[0,1,2,3,8]
list2=[3,6,7,8,9]
list=[]
while list1 and list2:
    if list1[0]<list2[0]:
        list.append(list1[0])
        list1.remove(list1[0])
    else:
        list.append(list2[0])
        list2.remove(list2[0])
for i in list2:
    list.append(i)

print("排序后:",list)

 

二十二、求  a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。

 

n=input()
count =int(input("个数"))
a=[]
b=0
for i in range(1,count+1):
    a.append(n*i)
    b+=int(n*i)
print('+'.join(a),"=",b)

二十三、给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前

 

import random
list=[random.randint(0,100)for i in range(10)]
print(list)
list1=[]
list2=[]
for i in list:
    if i%2==0:
        list1.append(i)
    else:
        list2.append(i)
list1.extend(list2)
print(list1)

 二十四、给定一个数组,已知数组中的元素都是成对出现, 现在数组中只有一个元素没有成对,请找出这个元素。 [1,3,1,2,2,8,8]

list=[1,3,1,2,2,8,8]
dict={}
for i in list:
    dict.setdefault(i,0)
    dict[i]+=1
for j in list:
    if dict[j]==1:
        print(f'{j}')
print(list)

 

思考:

爬楼梯问题
    
汉诺塔

不死兔子等等

某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退),问题:共有多少种走法?5行八列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值