Python编程题

1.斐波那契数列

def fib(n):
    if n == 1 or n == 2:
        return 1
    else:
        return fib(n - 1) + fib(n - 2)
n = int(input("输入要打印的斐波那契数的项数: "))
for i in range(1,n+1):
    print(fib(i),end=" ")

2.计算等差数列前n项和

        使用列表保存一个首项为2,公差为3的前n项,计算前n项和

n=int(input("输入等差数列的项数:"))
a=[]
a.append(2)
for i in range(n-1):
    a.append(a[i]+3)
print(a)
sum=0
for i in a:
    sum=sum+i
print(sum)

3.寻找幸运数字

        用列表存储n个数字,找出6的倍数将他们存储到新列表中,并在原列表中删除这些元素,返回原列表和新列表。

n=int(input("存储数字个数:"))
nums=list(range(1,n+1))#使用range函数将range结果转化为列表
luck=nums[5::6]#设置步长为6,从第六个元素开始,每隔6个元素取出一个
for i in luck:
    nums.remove(i)
print("幸运数字:",luck)
print("nums剩余数字",nums)

3.将等差数列下标为7的倍数的元素删除

        用列表保存等差数列前n项,将下标为7的倍数的元素存储到新的move列表中,从等差数列列表中删除move列表中的元素。

n = int(input("输入等差数列的项数:"))
a = []
#等差数列首项
a.append(2)
for i in range(1, n):
    a.append(a[i - 1] + 3)
# 打印等差数列
print(a)
#存储要删除的元素
move = []
for j in range(1, n):
    #将列表中下标为7的倍数的元素存储到move中
    if j % 7 == 0:
        move.append(a[j])
#在列表a中删除列表move中的元素
for k in move:
    a.remove(k)
print(a)

4.使用字典找到成绩最高的同学

        使用字典存储三个学生三门课程的成绩,姓名、学科、成绩一一对应,返回总分最高的同学姓名。 

students = {
    '小明': {'语文': 20, '数学': 96, '英语': 88},
    '小红': {'语文': 72, '数学': 80, '英语': 91},
    '小亮': {'语文': 83, '数学': 69, '英语': 75},
}  # 使用字典存储三位同学的成绩
# 存储分数最高的学生的姓名
highname = ""
# 存储分数最高的学生的成绩
highscore = 0
# 计算三位同学的总成绩
for name, score in students.items():
    total_score = sum(score.values())

    if total_score > highscore:
        highscore = total_score
        highname = name
    # 依次输出三位同学的总成绩
    print(f"{name}的总分是:{total_score}")
print(f"{highname}的总分最高,共{highscore}")

        其中用到了item()函数,具体用法在下面的链接中:


python中字典的items()函数_python中items()函数-优快云博客

5.回文字符串

        回文字符串:正读反读都相同的字符串,正序遍历和反序遍历的结果相同。

方法一:正序遍历和反序遍历同时进行,判断是否相同,第0个字符和第l-1个字符比较,依次往后

s=input("输入一个字符串:")
l=len(s)#l保存字符串s的长度
result=" "#存储判断回文串的结果
for i in range(0,l):
    if s[i]!=s[l-i-1]:
        result="不是回文串"
        break
    else:
        result="是回文串"
print(result)

方法二:将字符串逆序,然后与原字符串进行比较,如果相同就是回文串,否则不是。  

s = input("输入一个字符串:")
l = list(s)  # 将字符串s转为列表l
l.reverse()  # 调用reverse函数逆序列表
rs = "".join(l)  # 逆序后转回字符串
if rs == s:
    print("是回文串")
else:
    print("不是回文串")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值