python基础练习之数据类型

这篇博客主要介绍了Python的基本数据类型,包括数值运算、类型转换、字符串操作及高级操作。此外,还提供了课后作业,涵盖字符串循环左移、直角三角形斜边高、最后一个单词长度等计算问题,以及列表、元组、集合和字典的操作。通过这些实例,读者可以加深对Python数据类型和容器操作的理解。

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

上机练习:基本数据类型

(一)数值基本运算

  1. 基本数值运算:+, -, *, /, //, %, **
  2. 进制间转换:hex( ) 十六进制, oct( ) 八进制, bin( )二进制
33 + 7  # 加
40
33 - 7  # 减
26
33 * 7  # 乘
231
33 // 7  # 整除
4
33 / 7  # 除
4.714285714285714
33 % 7  # 余数
5
divmod (33,7)  # 整除除法和余数
(4, 5)
33 ** 7  # 乘方
42618442977
hex (33)  # 转十六进制
'0x21'
oct (33)  # 转八进制
'0o41'
bin (7)  #转二进制
'0b111'

(二)类型转换

1,0,‘abc’,None,1.2,False,‘ ’
str(), bool(), int(), float(), is None, ==, !=

str (0)
'0'
str ('abc')
'abc'
str (None)
'None'
str (1.2)
'1.2'
str (False)
'False'
str (' ')
' '
str ('')
''
bool (1)
True
bool (0)
False
bool ('abc')
True
bool (None)
False
bool (1.2)
True
bool (False)
False
bool (' ') # 引号中间有空格
True
bool ('') # 引号中间没有空格
False
注意:布尔型中‘’和‘空格‘不一样
int (0)
0
int (1.2)
1
int (False)
0
1 is None
False
'abc' is None
False
'' is None
False
False is None
False
None is None
True
0 == None
False
1 != None   # 不等于
True

(三)字符串基本操作

+, *, len( ), [ ], in,ord( ), chr( ),含有中文的字符串
注意:字符串一定要加引号!

'hello' + 'world'
'helloworld'
'hello' * 5
'hellohellohellohellohello'
len ('hello')
5
'hello world' [3:8:3]
'lw'
'hello world' [:10:4]
'hor'
'hello world' [4::2]
'owrd'
'hello word' [-1::2]
'd'
'hello world' [-1:-10:-2]
'drwol'
'oo' in 'hello world'
False
'he' in 'hello world'
True
('hello world' [4::2]) * 3
'owrdowrdowrd'
ord ('A')
65
ord ('a')
97
ord ('1')
49
chr (66)
'B'
chr (23)
'\x17'  # 十六进制的表示法
chr (98)
'b'

(四)字符串高级操作

s=‘abcdefg12345’
切片:获得defg12,获得fg12345,获得54321,
获得aceg2

s='abcdefg12345'
s [3:8:]
'defg1'
s [3:9:]  # 左开右闭 右边要往后一位才能包括
'defg12'
s [5::]
'fg12345'
s [-1:-8:]
''
s [-1:-8:-1]
'54321gf'
s [-1:-6:-1]  # 反向索引
'54321'
s [:9:2]
'aceg2'

t=‘Mike and Tom’
split拆分
upper/lower/swapcase修改大小写
ljust/center/rjust排版30位宽度左中右对齐
replace将Mike替换为Jerry

t='Mike and Tom'
t.split (' ')
['Mike', 'and', 'Tom'] 
# 引号内要空格
t.split ('')
Traceback (most recent call last):
  File "<pyshell#98>", line 1, in <module>
    t.split ('')
ValueError: empty separator

t.upper()
'MIKE AND TOM'
t.lower()
'mike and tom'
t.swapcase()
'mIKE AND tOM'

t.ljust(30, '*')  #在30个字符中左对齐
'Mike and Tom******************'
t.rjust(30,'*')
'******************Mike and Tom'
t.center(20)
'    Mike and Tom    '
t.replace ('Mike','Jerry')
'Jerry and Tom'

课后作业:基本数据类型

1. 字符串循环左移

给定一个字符串S,要求把S的前k个字符移动到S的尾部,如把字符串“abcdef”前面的2个字符‘a’、‘b’移动到字符串的尾部,得到新字符串“cdefab”,称作字符串循环左移k位。

输入一个字符串和一个非负整数N,要求将字符串循环左移N次。
可以使用以下语句实现字符串s的输入:
s=str(input())

可以使用以下语句实现非负整数n的输入:
n=int(input())

输入格式:
输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。

输出格式:
在一行中输出循环左移N次后的字符串。

输入样例:
abcd
2

输出样例:
cdab

slice切片 + 加法合并

s=str('abcdef')  # 具体例子
n=int(2)
k=s[:2]
kk=s[n:]
out=str(kk+k)
print(out)
cdefab

s=str(input())   # 囊括写法
n=int(input())
k=s[:n]
kk=s[n:]
out=str(kk+k)
print(out)

s=str(input())      # 简洁的写法(记住)
n=int(input())
out=str(s[:n]+s[n:])

2. 斜边上的高

输入直角三角形两直角边a,b的值,输出斜边上的高

可以使用以下语句实现非负整数a的输入:
a=int(input())
可以使用 round(x,2) 函数四舍五入保留2位小数

输入格式:
2行,每行一个整数,分别为a,b的值

输出格式:
一个数,即斜边上的高,保留2位小数

输入样例:
4
5

输出样例:
3.12

a=int(4)  # 具体例子
b=int(5)
c=(a*a+b*b)**0.5
h=a*b/c
hh=round(h,2)
print(hh)
3.12

a=int(input())  # 囊括写法
b=int(input())
c=(a*a+b*b)**0.5
h=a*b/c
hh=round(h,2)
print(hh)

a=int(input())  # 简洁一点
b=int(input())
c=(a*a+b*b)**0.5
h=a*b/c
print(round(h,2))

3. 最后一个单词

计算字符串最后一个单词的长度,单词以空格隔开。
可以使用以下语句实现字符串s的输入:
s=str(input())

输入格式:
一行字符串,非空,长度小于5000。

输出格式:
整数N,最后一个单词的长度。

输入样例:
hello world

输出样例:
5

s=str('hello world')  # 具体例子
t=s.split(" ")
tt=t[-1]
sum=len(tt)
print(sum)
5

s=str(input())  # 囊括写法
t=s.split(" ")
tt=t[-1]
sum=len(tt)
print(sum)

s=input()  #简洁一点
b=s.split() #必须生成b 否则s未变化
print(len(b[-1]))

4. 计算字符个数

接受一个由字母和数字组成的字符串,和一个字符,然后输出输入的字符串中含有该字符的个数。不区分大小写。

可以使用以下语句实现字符串s的输入:
s=str(input())

输入格式:
输入一个由字母和数字组成的字符串,和一个字符,以空格隔开。

输出格式:
输出输入的字符串中含有该字符的个数。

输入样例:
a1234bcdef a (这是两个单词啊)

输出样例:
1

s=str(input())  
t=s.split(" ")
last=str(t[-1])
first=str(t[0])
cot=first.count(last)
print(cot)

s=input()
b=s.split()
print(b[0].count(b[-1])) # b[0]中有几个b[-1]

5. A+B问题

给出两个整数,输出他们的和

可以使用以下语句实现整数n的输入:
n=int(input())

输入格式:
两行,每行一个整数

输出格式:
输出一个数,即他们的和

输入样例:
1
2

输出样例:
3

a=int(input())
b=int(input())
print(a+b)

6. 圆的周长与面积

给出一个圆的半径,求出圆的周长和面积

可以使用以下语句实现非负整数n的输入:
n=int(input())
使用 round(a,4) 函数保留4位小数,规定pi=3.14159

输入格式:
输入包含一个整数r,表示圆的半径

输出格式:
输出一行,包含2个数,分别是圆的周长、面积,用空格分隔开,数字保留小数点后4位

输入样例:
3
输出样例:
18.8495 28.2743

r=int(input())
pi=3.14159
c=2*pi*r
s=pi*r*r
cc=round(c,4)
ss=round(s,4)
print(cc,ss)

r=int(input())  # 简洁一点 
pi=3.14159
c=2*pi*r
s=pi*r*r
print(round(c,4),round(s,4)) 

7. 三角形面积

由三角形的三边长,求其面积。
规定:输入的三条边一定能构成三角形,不用进行判定。
提示:a,b,c小于1000由三角形的三边a,b,c求面积可以用如下的公式:
其中p=(a+b+c)/2
面积=S=√[p(p-a)(p-b)(p-c)]

请使用
print(’%.2f’%s)
来保留小数。

可以使用以下语句实现非负整数n的输入:
n=int(input())

输入格式:
三行,每行一个整数。

输出格式:
一个实数,保留两位小数。

输入样例:
3
4
5

输出样例:
6.00

a=int(input())
b=int(input())
c=int(input())
p=(a+b+c)/2
s=(p*(p-a)*(p-b)*(p-c))**0.5
print('%.2f'%s)

8. 等差数列末项计算

给出一个等差数列的前两项a1,a2,求第n项是多少

可以使用以下语句实现非负整数n的输入:
n=int(input())

输入格式:
三行,包含三个整数a1,a2,n

输出格式:
一个整数,即第n项的值

输入样例:
1
4
100

输出样例:
298

思路:等差数列,先求差m是多少,第n项的值:a1 + m*(n-1)

a1 = int(input())
a2 = int(input())
m = a2 - a1
n = int(input())
N = a1 + m*(n-1)
print(N)

上机练习:容器类型操作

(一)列表、元组操作

基本操作: + , * ,len() , [ ] ,in

mylist = [1,2,3,4,5]
mylist2 = ['a','b','c','d','e']
mylist + mylist2
[1, 2, 3, 4, 5, 'a', 'b', 'c', 'd', 'e']
mylist * 3
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
len(mylist)
5
len(mylist*3)
15
mylist[:4:2]
[1, 3]
3 in mylist
True

(二)列表、元组高级操作

高级操作:切片,拆分 split() ,合成 join()

# 切片:获得[2,3,4],获得[3,4,5],获得[3,2,1],获得[1,3,5]

# 列表切片
mylist = [1,2,3,4,5]
mylist[1:4]
[2, 3, 4]
mylist[2::]
[3, 4, 5]
mylist[-3::-1]
[3, 2, 1]
mylist[::2]
[1, 3, 5]

# 元组切片
>>> mytpl = (1,2,3,4,5)
>>> mytpl[1:4]
(2, 3, 4)
>>> mytpl[2:5]
(3, 4, 5)
>>> mytpl[-3::-1]
(3, 2, 1)
>>> mytpl[0:5:2]
(1, 3, 5)

t = 'mike and tom'
# 拆分
t.split(' ')
['mike', 'and', 'tom']
# 合并
'_'.join(['mike','and','tom'])
'mike_and_tom'
'/'.join(['mike','and','tom'])
'mike/and/tom'

(三)集合基本操作

a=set([1,2,3,4,5])
b=set([2,4,6,8,10])
并、交、差、异或、子集
添加、删除、是否空集
在这里插入图片描述

a=set([1,2,3,4,5])
b=set([2,4,6,8,10])
a|b
{1, 2, 3, 4, 5, 6, 8, 10}
a&b
{2, 4}
a-b
{1, 3, 5}
a^b
{1, 3, 5, 6, 8, 10}
a.add(7)
a
{1, 2, 3, 4, 5, 7}
c=a.pop()  # 删除最后一个元素是针对列表 用到set里面就成随机了!
c
1
a
{2, 3, 4, 5, 7}

(四)字典基本操作

mydict={1:‘Mon’, ‘line1’:3332}
添加、删除、是否空字典
取字典所有的key/value
判断key是否存在

>>> mydict = {1:'Mon', 'line1':3332}
>>> mydict.update({2:'FLC'})
>>> mydict
{1: 'Mon', 'line1': 3332, 2: 'FLC'}
>>> 3 in mydict
False

课后作业:容器类型操作

1. 合并两个列表并去重

输入两个列表alist和blist,要求列表中的每个元素都为正整数且不超过10;
合并alist和blist,并将重复的元素去掉后输出一个新的列表clist。

可以使用以下实现列表alist的输入:
alist=list(map(int,input().split()))

同时为保证输出结果一致,请将集合内元素排序之后再输出。
如对于列表alist,可输出sorted(alist)。

输入格式:
共两行,每一行都用来输入列表中的元素值,以空格隔开。

输出格式:
共一行,以列表形式打印输出。

输入样例:
1 2 3
4 3 2

输出样例:
[1,2,3,4]

alist=list(map(int,input().split()))  # 分成几个字符串、转换成整数、list变成列表
blist=list(map(int,input().split()))
clist=list(set(alist+blist)) # 合并、去重、变成集合set去重
print(sorted(clist)) # 排序、变成你列表输出(集合不能排序)

2. 对列表元素进行分类后加标签存入字典

输入一个列表,要求列表中的每个元素都为正整数且列表包含的元素个数为偶数;将列表中前一半元素保存至字典的第一个键值1中,后一半元素保存至第二个键值2中。

可以使用以下实现列表alist的输入:
alist=list(map(int,input().split()))

输入格式:
共一行,列表中的元素值,以空格隔开。

输出格式:
共一行,以字典的形式打印结果。

输入样例:
1 2 3 4

输出样例:
{‘1’: [1,2], ‘2’: [3,4]}

alist=list(map(int,input().split()))
n=len(alist)//2
dic={'1':alist[:n],'2':alist[n:]}
print(dic)

3. 列表反转

输入一个列表,将其反转后输出新的列表。

可以使用以下实现列表alist的输入:
alist=list(map(int,input().split()))

输入格式:
共一行,列表中的元素值,以空格隔开。

输出格式:
共一行,为一个列表。

输入样例:
1 2 3

输出样例:
[3, 2, 1]

alist=list(map(int,input().split()))
alist.reverse()  # 用reverse
print(alist)

alist=list(map(int,input().split()))
print(alist[::-1]) # 反转,step为-1

4. 列表元素绝对值排序

输入一个列表,要求列表中的每个元素都为整数;将列表中的所有元素按照它们的绝对值大小进行排序,绝对值相同的还保持原来的相对位置,打印排序后的列表(绝对值大小仅作为排序依据,打印出的列表中元素仍为原列表中的元素)。

可以使用以下实现列表alist的输入:
alist=list(map(int,input().split()))

输入格式:
共一行,列表中的元素值,以空格隔开。

输出格式:
共一行,为一个列表。

输入样例:
-2 1 3

输出样例:
[1, -2, 3]

alist=list(map(int,input().split()))
print(sorted(alist, key=abs)) # 绝对值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值