python练习笔记

这篇博客记录了作者在学习Python过程中的练习笔记,涵盖了数字逆序、字符串操作、回文判断、字符计数等多个基础编程任务,旨在通过实例加深对Python语法的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

python日常练习记录笔记,本篇文章是自己用来记录python学习笔记的,内容是平时上课做的练习代码,以及自己的笔记总结


一、四位数逆序输出

描述:编写一个程序,提示用户输入四位整数并以反向顺序显示。
输入格式:一个四位的整数
输出格式:四个一位整数,在同一行输出,空格分隔,结尾无空格无换行
示例输入1:1234
示例输出1:4 3 2 1

n=input()
print(' '.join(n[::-1]))

笔记:
(1)join方法:将括号中所有的元素合并为一个新的字符串
str.join(seq)
seq:要连接的元素序列
str:连接符
返回通过指定字符连接序列中元素后生成的新字符串
(2)[::-1]: 即[-1:-len(n)-1:-1],将数字或字符倒序输出

  • n[i:j] 表示复制n[i]到n[j-1],当i缺省时,默认为0;当j缺省时,默认为len(n);当i,j都缺省时,n[:]就相当于完整复制一份n
  • n[i:j:s]表示:i,j与上面的一样,但s表示步长,缺省为1;即n[i:j:1]相当于n[i:j]
    当s<0时,i缺省时,默认为-1; j缺省时,默认为-len(n)-1

二、字符串截取

描述:字符串“我喜欢去故宫和长城。”,把“故宫”和“长城”两个地名提取并显示。
输入格式:无
输出格式:输出”故宫“和“长城”,各占一行。不要增加额外的提示信息。
示例输入1:我喜欢去故宫和长城。
示例输出1:故宫长城

str=input()
print(str[4:6],str[-3:-1],sep='')

笔记:
sep: 用来设定print()中的多个对象之间的连接符号是什么,默认是空格。

三、判断回文字符串

描述:输入一个字符串,判断该字符串是否为回文。回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。
输入格式:输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。
输出格式:输出在第1行中输出字符串。如果它是回文字符串,在第2行中输出Yes,否则输出No。
示例输入1:level
示例输出1:level
Yes

s=str(input())
print(s)
if s[::-1]==s:
    print("Yes")
else:
    print("No")

四、计算字符个数

描述:通过输入,在一行内接收一个仅由字母和数字组成的字符串,还有一个单一字符,然后输出“输入的字符串”中含有该字符的个数。不区分大小写。
【提示】:1、必须使用字符串处理方法str.lower()或str.upper()。2、输入数据仅占一行,获取输入的字符串和字符必须使用str.split()分别获取。
输入格式:输入一个由字母和数字组成的字符串,和一个字符,以空格隔开。
输出格式:输出“输入的字符串”中含有该字符的个数。
示例输入1:a1234bAcdeAf a
示例输出1:3

s=input().split(" ")
count=0
for i in s[0]:
    if i.lower()==s[1].lower():
        count+=1
print(count)

笔记:
(1)split方法:通过指定分隔符对字符串进行切片,并返回分割后的字符串列表
str.split(string=“”,num=string.count(str))
string:以string为分隔符切片str(变量中存在的分隔符);默认为空格,但是不能为空(‘’)。若字符串中没有分隔符,则把整个字符串作为列表的一个元素。
num:分割次数,可选,如num有指定值,则仅分割num+1个字符串。
(2)str.lower()方法:将大写字母转为小写字母。
(3)str.upper()方法:将小写字母转为大写字母。

五、节约用电

描述:某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。
输入格式:输入在一行中给出某用户的月用电量(单位:千瓦时)。
输出格式:在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost =应付电费值”;若用电量小于0,则输出"InvalidValue!"。
示例输入1:100
示例输出1:cost = 55.50
示例输入2:-100
示例输出2:Invalid Value!

x=int(input())
if x<0:
    print("Invalid Value!")
elif 0<=x<=50:
    cost=0.53*x
    print(f'cost = {cost:.2f}')
elif x>50:
    cost=50*0.53+0.58*(x-50)
    print(f'cost = {cost:.2f}')

六、克莱姆法则求解方程

描述:请用克莱姆法则解下面的线性方程2x2系统:
在这里插入图片描述
编写程序,用户输入数字a、b、c、d、e和f,然后显示x和y的结果。如果ad-bc为零,呈现“The equation has no solution”。
输入格式:a,b,c,d,e和f的值(逗号分隔)。
输出格式:x和y的值(空格分隔,小数点后保留1位)。
示例输入1:1.0,2.0,2.0,4.0,4.0,5.0
示例输出1:The equation has no solution
示例输入2:2,4,1,8,3,2
示例输出2:x=1.3,y=0.1

a,b,c,d,e,f=map(eval,input().split(","))
if a*d-b*c==0:
    print("The equation has no solution")
else:
    x=(e*d-b*f)/(a*d-b*c)
    y=(a*f-e*c)/(a*d-b*c)
    print(f'x={x:.1f},y={y:.1f}')

七、计算年薪

描述:编写程序,要求输入一个人的姓名和目前的年薪,然后计算这个人下一年的薪水。如果年薪小于40000元,则下一年的年薪将增长5%。如果年薪大于等于40000元收入,下一年的年薪除增加2000元外,还会增加超过40000元部分的2%。
输入格式:共输入两行信息,第一行为姓名(字符串),第二行为目前年薪(数字)。
请输入姓名:**‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
请输入目前的年薪:****元‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
输出格式:输出
新一年的年薪是:****元 。不要增加额外的提示信息。
**新一年的年薪是:****元‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
示例输入1:Linda
10000
示例输出1:Linda新一年的年薪是:10500.0元
示例输入2:Bob
78946
示例输出2:Bob新一年的年薪是:81724.9元

s=str(input())
n=int(input())
if n<40000:
    y=n+0.05*n
    print(f'{s}新一年的年薪是:{y:.1f}元')
elif n>=40000:
    y=n+2000+0.02*(n-40000)
    print(f'{s}新一年的年薪是:{y:.1f}元')

八、划分分数等级

描述:编写程序实现以下功能:判断成绩的等级,90—100输出“A”,80—89输出“B”,70—79输出“C”,60—69输出“D”,0—59输出“E”,其他输出“invalid”。
输入格式:一个数值。
输出格式:A、B、C、D、E或invalid。
示例输入1:100
示例输出1:A
示例输入2:101
示例输出2:Invalid

n=int(input())
if 90<=n<=100:
    print("A")
elif 80<=n<90:
    print("B")
elif 70<=n<80:
    print("C")
elif 60<=n<70:
    print("D")
elif 0<=n<60:
    print("E")
else:
    print("Invalid")

九、字母反转

描述:对一个以“ ” 结 束 的 字 符 串 , 将 其 小 写 字 母 全 部 转 换 成 大 写 字 母 , 把 大 写 字 母 全 部 转 换 成 小 写 字 母 , 其 他 字 符 不 变 输 出 。 输 入 格 式 : 输 入 为 一 个 以 “ ”结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。 输入格式:输入为一个以“ ”结束的字符串(输入允许换行)。
输出格式:在一行中输出大小写转换后的结果字符串。
示例输入1:Hello World! 123$
示例输出1:hELLO wORLD! 123
示例输入2:Good GOOD study
dAY dAY uP!
$
示例输出2:gOOD good STUDY
Day Day Up!

lst=[]
while True:
    s=input()
    lst.append(s)
    if s[-1]=='$':
        break
ls='\n'.join(lst)
print(ls[0:-1].swapcase())

十、查找指定字符

描述:用键盘输入两行,第一行是一个字符,第二行是一个字符串,查找并返回第一行中字符在第二行字符串中是否出现,若出现返回该字母在字符串中的最大下标,若不出现,返回“Not Found”。
输入格式:输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过20个字符,超出则报错)。
输出格式:如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"(不区分大小写)。
示例输入1:M
programming
示例输出1:index = 7
示例输入2:a
1234
示例输出2:Not Found
示例输入3:d
12222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
示例输出3:输入错误!

s=input().lower()
str1=input().lower()
num=-1
if len(str1)>20:
    print("输入错误!")
elif s not in str1:
    print("Not Found")
for i in range(0,len(str1)):
    if s==str1[num]:
        print(f'index = {str(len(str1)+num)}')
        break
    num-=1

十一、时间计算

描述:接收用户输入的一个秒数(非负整数),折合成小时、分钟和秒输出。
输入格式:一个非负整数。
输出格式:将小时、分钟、秒输出到一行。
示例输入1:70000
示例输出1:19时26分40秒

n=int(input())
h=n//3600
m=int(n%3600/60)
s=n%60
print(f'{h}{m}{s}秒')

十二、温度转换2

描述:温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fahrenheit)。请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。转换算法如下:(C表示摄氏度、F表示华氏度)C = ( F - 32 ) / 1.8;F = C * 1.8 + 32。

要求如下:

(1) 输入输出的摄氏度可采用大小写字母C结尾,温度可以是整数或小数,如:12.34C指摄氏度12.34度;

(2)输入输出的华氏度可采用大小写字母F结尾,温度可以是整数或小数,如:87.65F指华氏度87.65度;

(3)输出保留小数点后两位,输入格式错误时,输出提示:输入格式错误;

(4) 使用input()获得测试用例输入时,不要增加提示字符串。

示例输入1:12.34C
示例输出1:54.21F
示例输入2:12.34
示例输出2:输入格式错误!
示例输入3:12.34c
示例输出3:54.21f

s=str(input())
if s[-1] in ['f','F']:
    C=(eval(s[0:-1])-32)/1.8
    print(f'{C:.2f}{chr(ord(s[-1])-3)}')
elif s[-1] in ['c','C']:
    F=(eval(s[0:-1])*1.8)+32
    print(f'{F:.2f}{chr(ord(s[-1])+3)}')
else:
    print("输入格式错误!")

十三、字符串循环左移

描述:给定一个字符串S,要求把S的前k个字符移动到S的尾部,如把字符串“abcdef”前面的2个字符‘a’、‘b’移动到字符串的尾部,得到新字符串“cdefab”,称作字符串循环左移k位。
输入格式:输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。
输出格式:在一行中输出循环左移N次后的字符串。
示例输入1:abcd
2
示例输出1:cdab

s=str(input())
n=int(input())
ns=s[n:]+s[:n]
print(ns)

十四、工作日的力量1

描述:在一年365天中,常见的工作模式为“5+2”,即在一年365天,一周有5个工作日、2个休息日,假设在工作日阶段,每天进步1%;不工作时,每天退步1%?那么坚持一段时间下来取得的结果会是什么呢?为测试一下,请编写程序,默认从本年的第一天开始努力,实现从键盘输入结束的天数。输出通过这段时间的努力获得力量之后的值。
输入格式:共一行,一个正整数,代表结束的天数(结束天数应小于等于365)。
输出格式:共一行,为一个浮点数,保留两位小数。
示例输入1:123
示例输出1:1.72

n=int(input())
day=1.0
dayratio=0.01
for i in range(1,n+1):
    if i%7 in [0,6]:
        day=day*(1-dayratio)
    else:
        day=day*(1+dayratio)
print(f'{day:.2f}')

十五、循环数数

描述:数字197可以被称为循环素数,因为197的三个数位循环移位后的数字:197,971,719均为素数。100以内这样的数字包括13个,2,3,5,7,11,13,17,31,37,71,73,79,97。要求任意正整数n以内一共有多少个这样的循环素数。
输入格式:共一行,为一个正整数n。
输出格式:n以内循环素数的值。
示例输入1:100
示例输出1:13

def sushu(n):
    if n<=1:
        return False
    else:
        for i in range(2,n):
            if n%i==0:
                return False
        else:
            return True
n=input()
count=0
for i in range(int(n)):
    if sushu(int(i)):
        new_n=str(i)
        for j in range(len(str(i))):
            new_n=new_n[1:]+new_n[0]
            if not sushu(int(new_n)):
                break
        else:
            count+=1
print(count)

十六、烧热水

描述:编写一个程序,计算将水从初始温度加热到最终温度所需的能量。提示用户输入以千克计算的水量以及水的初始温度和最终温度。计算能量的公式是:Q = M * (最终温度–初始温度) * 4184。M是按千克计的水量,温度为摄氏温度,热量Q以焦耳计。
输入格式:以千克计算的水量以及水的初始温度和最终温度(摄氏温度),输入下一项需换行。
输出格式:以焦耳计算的能量(小数点后保留一位)。
示例输入1:55.5
3.5
10.5
示例输出1:1625484.0

M=float(input())
cw=float(input())
zw=float(input())
Q=M*(zw-cw)*4184
print(f'{Q:.1f}')

十七、数列求和1

描述:现有数列:
现在请输入一个正整数N,计算S的值。
输入格式:一个正整数N。
输出格式:一个整数。
示例输入1:3
示例输出1:24

n=int(input())
s=0
for i in range(1,n+1):
    if i%2==1:
        s+=i**i
    else:
        s-=i**i
print(s)

十八、数列求和2

描述:现有数列:
且数列满足如下要求:每当次方数大于10时,次方数从1开始重新计算。
现在请输入一个正整数N,计算S的值。
输入格式:一个正整数N。
输出格式:一个整数。
示例输入1:11
示例输出1:-9628576936

def xunhuan(n):
    if n%10==0:
        return 10
    else:
        return n%10
n=int(input())
s=0
for i in range(1,n+1):
    if i%2==1:
        s+=i**xunhuan(i)
    else:
        s-=i**xunhuan(i)
print(s)

十九、删除字符串中连续的重复字符

描述:通过键盘输入一串小写字母(a~z)组成的字符串,编写一个测试程序,将字符串中连续出现的重复字符删去(即在一个字符串中,如果遇到连续重复的字符只出现一次),然后输出处理后的字符串。例如:str1=“aabbccddaabbccdd”,输出结果为:“abcdabcd”。
输入格式:共一行,为一个字符串。
输出格式:共一行,为删除连续的重复字符后得到的新字符串。
示例输入1:aabcccccaaa
示例输出1:abca

s=list(input())
s2=[]
s2.append(s[0])
for i in range(1,len(s)):
    if s[i]!=s[i-1]:
        s2.append(s[i])
print(''.join(s2))

二十、列表合并去重

描述:输入两个列表alist和blist,要求列表中的每个元素都为正整数且不超过10;合并alist和blist,并将重复的元素去掉后输出一个新的列表clist。同时为保证输出结果一致,请将列表clist内元素按升序排序之后再输出。
输入格式:共两行,每一行都用来输入列表中的元素值,以空格隔开。
输出格式:共一行,以列表形式打印输出。
示例输入1:1 2 3
4 3 2
示例输出1:[1, 2, 3, 4]

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

二十一、0的组合

描述:给定一个包含若干个整数(可能存在重复整数)的列表,判断其中是否存在三个元素a,b,c,使得a+b+c=0?找出所有满足条件且不重复的这样的三个数的组合。
【注意点】

  • 所给的数字是可以重复的,所给数字为1,1,-2,0,0,0
  • 组合是不可以重复的,即[1,-1,2]和[2,-1,1],算是重复的,应该删除
  • 可以借助集合去除重复

输入格式:共一行,元素以空格隔开。
输出格式:共一行,为不重复组合的个数,不存在这样的组合就输出0。
示例输入1:-1 0 1 2 -1
示例输出1:2

n=list(map(int,input().split()))
n.sort()
s=set()
for i in range(len(n)-2):
    for j in range(i+1,len(n)-1):
        for k in range(j+1,len(n)):
            if n[i]+n[j]+n[k]==0:
                s.add((n[i],n[j],n[k]))
print(len(s))

二十二、矩阵翻来覆去的运算

描述:给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。若输入的不是一个n×n的方阵,则输出“输入错误,请重新输入!”
输入格式:输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。
输出格式:一行。若输入正确,则给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和;若输入错误,则输出“输入错误,请重新输入!”
示例输入1:4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1
示例输出1:35
示例输入2:3
1 1 1 2 3
3 4 5 6 6
1 1 1 1 1
1 1 1 1 1
示例输出1:输入错误,请重新输入!

n=int(input())
lis=[]
s=0
for i in range(n):
    lis.append(list(map(int,input().split())))
    if len(lis[i])!=n:
        print("输入错误,请重新输入!")
        break
else:
    for i in range(n-1):
        for j in range(n-1):
            if (i+j)!=(n-1):
                s+=lis[i][j]
    print(s)

二十三、利息计算

描述:假如你想将一笔钱以固定年利率存入账户。如果你希望三年之后账户中有5000元,你现在需要存入多少钱?使用下面的公式可以算出初始存款:在这里插入图片描述
编写一个程序,提示用户输入最终金额值、百分比表示的年利率以及年数,然后显示最初存款额。

输入格式:最终金额值、百分比表示的年利率以及年数,输入下一项需换行。
输出格式:最初存款额(注意:计算后保持原样输出,保留两位小数位数)。
示例输入1:1000
4.25
5
示例输出1:808.86

money=float(input())
li=float(input())
y=int(input())
zc=money/pow(1+li/12/100,y*12)
print(f'{zc:.2f}')

二十四、和谐列表

描述:和谐列表是指一个列表里元素的最大值和最小值之间的差别 正好是 1 。现在,给你一个整数列表Lis ,请你在所有可能的子序列中找到最长的和谐子序列的长度。列表的子序列是一个由列表派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。例如:输入列表[1,3,2,2,5,2,3,7],则它的最长子序列为[3,2,2,2,3],因此,应输出长度为5。
输入格式:一行,一个列表。
输出格式:一行,最长子序列长度。
示例输入1:1,3,2,2,5,2,3,7
示例输出1:5

lst=list(map(int,input().split(',')))
count1,count2,m=0,0,0
for i in lst:
    if (i+1) in lst:
        count1=lst.count(i)+lst.count(i+1)
    elif (i-1) in lst:
        count2=lst.count(i)+lst.count(i-1)
    if max(count2,count1)>m:
        m=max(count2,count1)
print(m)

二十五、字符串的基本操作

描述:输入一行字符串,输出每行英文字母、数字及其他字符的个数,并将字符串中的小写字母变成大写字母,大写字母保持不变后输出。
示例输入1:aBBcc学123习一个BCc
示例输出1:字母字符数有8,阿拉伯数字字符数有3,其他字符有4,本条字符转换为:ABBCC学123习一个BCC

lst=list(map(int,input().split(',')))
count1,count2,m=0,0,0
for i in lst:
    if (i+1) in lst:
        count1=lst.count(i)+lst.count(i+1)
    elif (i-1) in lst:
        count2=lst.count(i)+lst.count(i-1)
    if max(count2,count1)>m:
        m=max(count2,count1)
print(m)

总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值