1.把A列表的第三到第六位之间的元素删除。
# 把A列列表的第三到第六位之间的元素删除。
A = [i for i in range(1,20)] #产生一个列表
print("删除前:",A)
for i in range(2): #思路:删除当前下标的元素后,后一个元素的下标变为当前下标,再次删除就行了
del A[3]
print("被删除的元素:",A[3])
print("删除后:",A)
运行结果:
删除前: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
被删除的元素: 5
被删除的元素: 6
删除后: [1, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
2.已知A列列表,B列列表,定义⼀一个列列表C,要求C包含A,B数组中的数据(无重复值)。
# 已知A列列表,B列列表,定义⼀一个列列表C,要求C包含A,B数组中的数据(无重复值)。
A = [i for i in range(1,20)]
B = [i for i in range(10,30)]
C = A+B # 先把两个列表合并在一起 然后再去去除重复的元素
# 去除重复的元素
i = 0 # i表示从左边取出元素的下标
while i <len(C):
for x in range(len(C)-1,i,-1): # x 表示从列表右边取出元素的下标,从右边一直取到下标(i-1)
if C[i] == C[x]: # 两个元素相同 删除右边的元素,保留左边的元素。
del C[x]
i += 1
print("去除重复元素后的C列表:",C)
运行结果:
去除重复后的C列表: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
3.求s=a+aa+aaa+aaaa+aa...a的值,其中a是⼀一个数字。例例如2+22+222+2222+22222(此时共有5个数相 加),⼏几个数相加有键盘控制。
# 求s=a+aa+aaa+aaaa+aa...a的值,其中a是⼀一个数字。例例如2+22+222+2222+22222(此时共有5个数相 加),⼏几个数相加有键盘控制。
while True:
n = int(input("请输入N的值:"))
a = int(input("请输入a的值:"))
if 0 <= a <= 9: # a的值不能超过9
a = str(a)
s = 0
for i in range(1, n+1):
number = a * i
print(number)
s += int(number)
print("他们的和是:", s)
break
else:
print("输入的a值有问题 请重新输入:")
运行结果:
请输入N的值:9
请输入a的值:12
输入的a值有问题 请重新输入:
请输入N的值:6
请输入a的值:1
1
11
111
1111
11111
111111
他们的和是: 123456
3. 打印图形1
n = 4
@
@@
@@@
@@@@
n = int(input("请输入N的值:"))
for i in range(n):
for x in range(i+1):
print("@",end = "")
print("")
运行结果:
请输入N的值:6
@
@@
@@@
@@@@
@@@@@
@@@@@@
4.打印图形2
n = int(input("请输入N的值:"))
# 打印正三角
for i in range(1,n+1): # i 控制打印的行数
for x in range(n-i): #第一(i)排打印n-1(n-i)个空格i,第二行打印
print(" ",end="") #控制打印空格
for y in range(i):
print("@ ",end="")
print("") #打印完一行就换行
print("正三角打印完毕!")
#打印倒三角:
for i in range(n): # i 控制打印的行数
for y in range(n-i):
print("@ ",end="")
print("") #打印完一行就换行
print("倒三角打印完毕!")
运行结果:
请输入N的值:5
@
@ @
@ @ @
@ @ @ @
@ @ @ @ @
正三角打印完毕!
@ @ @ @ @
@ @ @ @
@ @ @
@ @
@
倒三角打印完毕
5. 输入两个正整数m和n,求其最大公约数和最小公倍数。
# 输⼊入两个正整数m和n,求其最⼤大公约数和最⼩小公倍数
m = int(input("请输入m的值:"))
n = int(input("请输入n的值:"))
if m<n:
temp = m
m = n #交换两数的值 #交换两个数的值,是为了固定大的数字在前,小的数字在后,方便后面写代码
n = temp
for i in range(n,0,-1): #思路:约数从最大的开始找起
if m % i == 0 and n % i == 0:
print("%d与%d的最大公约数是:%d"%(m,n,i))
print("%d与%d的最小公倍数是:%d" % (m, n, m*n/i))
break #找到的第一个就是最大公约数,后面的不用再继续。
运行结果:
请输入m的值:36
请输入n的值:96
96与36的最大公约数是:12
96与36的最小公倍数是:288
6. ⼀个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有 完数
# ⼀一个数如果恰好等于它的因⼦子之和,这个数就称为 "完数 "。例例如6=1+2+3.编程 找出1000以内的所有 完数
number = []
for i in range(1,1001):
for x in range(1,i): # x 表示i这个数的一个因子
if i % x == 0:
number.append(x) #把x加入到一个列表中,方便后面求和。
s = 0 # s 用于存储因子的和
for y in range(len(number)): # 把因子依次取出来并且相加
s += number[y]
if s == i:
print("找到了一个完数:",i,end=" = ")
for n in range(len(number)): # 为了打印时好看设置的代码 可以删除
if n==len(number)-1:
print(number[n])
else:
print(number[n],end="+")
print ("")
number = [] #每一个主循环末尾 存储因子的列表要清空 否则不能正确存储下一个数的因子
运行结果:
找到了一个完数: 6 = 1+2+3
找到了一个完数: 28 = 1+2+4+7+14
找到了一个完数: 496 = 1+2+4+8+16+31+62+124+248
7. 输出9*9口诀
# 打印九九乘法表
for i in range(1,10):
for x in range(1,i+1): # 太简单 就不解释了
print("%s×%s=%s\t"%(x,i,x*i),end="")
print("")
运行结果:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
1×4=4 2×4=8 3×4=12 4×4=16
1×5=5 2×5=10 3×5=15 4×5=20 5×5=25
1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
8.一个5位数,判断它是不是回文数。即12321是回⽂文数,个位与万位相同,十位与千位相同。
while True:
n = input("请输入一位五位整数:")
if len(n) == 5 : #太简单 就不解释了
if n[0]==n[-1] and n[1]==n[-2]:
print("%s是一个回文数" % (n))
break
else:
print("%s不是一个回文数"%(n))
break
else:
print("输入的数不是五位数,请重新输入")
运行结果:
请输入一位五位整数:1235
输入的数不是五位数,请重新输入
请输入一位五位整数:12345
12345不是一个回文数
9.打印图形(菱形)
# 打印图形(菱形)
n = int(input("请输入N的值:")) #整体思路:将上面打印正三角的代码,后面加上打印倒的正三角的代码就行了
for i in range(1,n+1): # i 控制打印的行数
for x in range(n-i): #第一(i)排打印n-1(n-i)个空格i,第二行打印
print(" ",end="") #控制打印空格
for y in range(i):
print("@ ",end="")
print("")
for i in range(1, n): # i 控制打印的行数for x in range(i): # 第一(i)排打印n-1(n-i)个空格i,第二行打印
for x in range(i):
print(" ", end="") # 控制打印空格
for y in range(n-i):
print("@ ", end="")
print("") #打印完一行就换行
print("打印完毕!")
运行结果:
请输入N的值:7
@
@ @
@ @ @
@ @ @ @
@ @ @ @ @
@ @ @ @ @ @
@ @ @ @ @ @ @
@ @ @ @ @ @
@ @ @ @ @
@ @ @ @
@ @ @
@ @
@
打印完毕!
10.输入⼀行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
str1 = input("请随便输入一些字符吧:")
chinese = 0
english = 0 # 整体思路:用unicode编码来判断取出的字符是什么属性。
space = 0
other =0
number = 0
for i in str1:
if 0x4e00 <= ord(i) <= 0x9fbf: #中文的编码在这个区间
chinese += 1
elif 0x0041 <= ord(i) <= 0x005a or 0x0061 <= ord(i) <= 0x007a: #英文字母的编码在这个区间
english += 1
elif 0x0030 <= ord(i) <= 0x0039: # 数字的编码在这个区间
number += 1
elif ord(i) == 0x00a0 or ord(i) == 0x0020: #空格的编码是这个
space += 1
else: #剩下的就是其他的字符了
other += 1
print("您输入的字符串中:汉字有%d个,数字有%d个,字母有%d个,空格有%d个,其他字符有%d个"%(chinese,number,english,space,other))
运行结果:
请随便输入一些字符吧:123 一二三,。ACD、、】abc
您输入的字符串中:汉字有3个,数字有3个,字母有6个,空格有3个,其他字符有5个