Python编程题

1

1_1 阶梯运费。首重2kg13元,续重3元每公斤。

import  math
Money=13
a=int(input("输入重量"))
if a<=4:
 print("金额",Money)
else:
 Money=Money+math.ceil(a-4)*3
 print("金额",Money)

1_2 反转一个任意长度的正整数,如1234反转为4321.

a=int(input("输入字符串"))
str1=str(a)
print(str1[::-1])

1_3 求三位数,其平方的结尾为它本身。如625的平方为390625.求出所有这样的3位数。

for i in range(100,1000):
 if i==i*i%1000:
  print(i)

1_4 勾股数,30以内的满足勾股定理的数。

for i in range(1,31):
    for j in range(i,31):
        for k in range(31):
            if i*i+j*j==k*k:
                print(i,j,k)

1_5 闰年:能被400整除。能被4整除并且不能被100整除。

a=int(input("输入年份"))
if a%400==0 or a%4==0 and a%100!=0:
 print("是闰年")
else:
 print("不是闰年") 

1_6 鸡兔同笼。输入头数与脚数。

a=int(input("头"))
b=int(input("脚"))
for i in range(a):
 if 2*i+4*(a-i)==b:
  print("兔子",i)
  print("鸡",a-i)
# 3  10

1_7 -元二次方程求解。函数参数为一元二次方程参数,ax2+bx+c=0

import math
i=input("系数")
list1=i.split(" ")
a=int(list1[0])
b=int(list1[1])
c=int(list1[2])
delta=b*b-4*a*c
if delta<0:
    print("无解")
elif delta==0:
    print("x解为",-b/(2*a))
else:
    
    d=math.sqrt(b*b-4*a*c)
    print("x1解为",(-b-d)/2*a)
    print("x2解为",(-b+d)/2*a)

1_8 猴子吃桃猴子摘到了若千个桃子,第一天吃掉了一半多一个,第二天吃剩下的一半多一个,第八天只有一个桃子了。请问猴子摘到了几只桃子?

def sumpeach(day):
    if day==1:
        return 1
    else:
        return 2*sumpeach(day-1)+1
a=sumpeach(9)
print(a)

1_9 素数

a=int(input("输入整数"))
for i in range(2,a):
 if a==2:
  print("是素数")
 elif  a%i==0:
  print("不是素数")
  break
 elif a==i:
  print("是素数")

1_10 斐波那契数列

n=int (input("请输入斐波那契数列的项数"))
list2=[1,1]
def lifibo(n): #列表生成

    i=2
    while i<=n:
        list2.append(list2[i-1]+list2[i-2])
        i=i+1
    return list2


def refibo(n):#递归生成
    if n<=1:
        return n
    else:
        return (refibo(n-1)+refibo(n-2))


list1=[]
def forfibo(n):#循环生成
    a,b=0,1
    for i in range(n):
        list1.append(b)
        a, b = b, a + b


lifibo(n)
print(list2)

# for i in range(n):
#     print(refibo(i),end=' ')

# forfibo(n)
# print(list1)

1-11 韩信点兵。1~1000以内,用3除余2,用5除余3,用7除余2.

for i in range(1,1001):
    if i%3==2 and i%5==3 and i%7==2:
        print(i)
    else:
        continue 

1-12 设m=1 2 * 3 * . . . n求m为不太于20000时最大的n。

n=1
i=1
while n<=2000:
    n=n*i
    i += 1
print(i)   

2

2-2 求1~100之间的所有素数,并统计素数的个数。优先用筛法,

import  math
Max=100
mark=[True]*(Max+1)
#print(mark)
for i in range(2,math.ceil(math.sqrt(Max))):
    j=i
    k=j
    while j*k<=Max:
        mark[j*k]=False
        k += 1
sum_1=0
for i in range(2,Max+1):
    if mark[i] is True:
        if sum_1%10==0:
            print()
        print(i,end='\t')

        sum_1 += 1
print()
print(sum_1)

2-3 编写函数,可以接收任意多个整数,并输出其中最大值和所有偶数的和。

def num():
	list1=input("输入整数空格隔开").split(' ')
	list1= list(map(int, list1))
	max=0
	sum1=0
	for i in range(len(list1)):
    	if list1[i]%2==0:
        	sum1=sum1+list1[i]   
    	max=list1[0] 
    	if list1[i]>max:
        	max=list1[i]
      return sum1,max   
print(list1)
print(max)
print(sum1)

2-4 编写程序,生成包含50个随机数列表,然后删除所有的奇数。

import random
list_1 = []
for i in range(50):
    list_1.append(random.randint(0,100))
print('生成的随机整数列表为:\n',list_1)
j=0
while j<len(list_1):
    if list_1[j]%2!=0 :
        del list_1[j]
    j+=1
print("删除奇数后的列表:\n",list_1)

2-5 假设有一段英文,其中所有的I被误写为i请编写程序改正。

str_1='qwertyuiop'
list_1=list(str_1)
print(list_1)
for i in range(len(list_1)):
    if list_1[i]=='i':
        list_1[i]='I'  
str_1=map(str,list_1)        
print("".join(str_1))   

2-6 编写函数,接收一个字符串,并返回大写字母个数数字个数,用元组形式返回。

def find():
    num=0
    alp=0
    s=input("输入字符串")
    for i in s:
        if i.isdigit():
            num=num+1
        elif i.isalpha() and i.isupper():
            alp=alp+1
    return  alp,num
a,b=find()
c=(a,b)
print(c)

2-7编写函数,接收一个高维向量,将其变成一维向量返回。

def HigToLow(a):
    global one
    for i in a:
        if isinstance(i,list):
            return HigToLow(i)
        else:
            one.append(i)
    return one
one=[]
a=[1,2,[1,2,[1,2]]]
print(HigToLow(a))

2-8设计一个字典,以用户输入为键,如果输入存在则输出对应的值,否则输出“键不存在”

d = {'Mikey':'1','Tom':2,'Jerry':3,'Peter':4}
a = input("input the name:")
print (d.get(a,"键不存在!"))

3

3-1.编写函数,函数参数为正整数n,返回值为第n个素数。

def findnum(x):
    global count
    global n
    while count!=x:
        n+=1
        if isprime(n):
            count+=1
    return n
def isprime(n):
    if n==2:
        return  True
    for i in range(2,n):
        if n%i==0:
            break
        elif n==i+1:
            return True
count=0
n=1
x=int(input("请输入第n项素数"))
print(findnum(x))

3-2 编写函数,函数接收任意多个整数,返回值为其中奇数个数。

def a():
    list1=input("输入整数空格隔开").split(' ')
    list1= list(map(int, list1))
    count=0
    for i in range(len(list1)):
        if list1[i]%2==1:
            count=count+1
    return count
b=a()
print()  
print("奇数个数",b)  

3-3.编写程序,生成第n个斐波那契数

list1=[]
def forfibo(n):#循环生成
    a,b=0,1
    for i in range(n):
        list1.append(b)
        a, b = b,a+b
    return list1,b
list2,a=forfibo(5)
print(a)

3-4 编写程序,判断一个字符串里长度为3的单词有几个。

count=0
list1=input("输入英文字符串").split()
for i in list1:
    if len(i)==3:
        count+=1
print(count)
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平平无奇卷心菜丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值