Runoob Python100例 个人解答

# https://www.runoob.com/python/python-100-examples.html
# python v3.8
# pycharm 2020.2.3 (Community Edition)# 练习1:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?————————————————————————————————————————————————1
print([x*100+y*10+z for x in range(1,5) for y in range(1,5) for z in range(1,5) if(x!=y)and(x!=z)and(y!=z)])# 练习2:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;——————————————————————————————————————————————————————2
# 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
# 20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;
# 60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
jinglirun = int(input('净利润:'))
lirun = [1000000, 600000, 400000, 200000, 100000, 0]
ticheng = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]
jiangjin = 0
for i in range(6):if jinglirun > lirun[i]:jiangjin += (jinglirun - lirun[i]) * ticheng[i]jinglirun = lirun[i]
print(jiangjin)# 练习3:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?—————————————————————————————————————————3
print([n**2-100 for m in range(168) for n in range(m) if m**2-n**2==168])# 练习4:输入某年某月某日,判断这一天是这一年的第几天?—————————————————————————————————————————————————————————————————————————4
year = int(input('year : '))
month = int(input('month : '))
day = int(input('day : '))
leap = ((year%4==0 and year%100!=0) or year%400==0) and month>2
months = [31,28,31,30,31,30,31,31,30,31,30,31]
days = 0
for i in range(month-1):days += months[i]
print('it is the ' + str(days+day+leap) + 'th day.')# 练习5:输入三个整数x,y,z,请把这三个数由小到大输出。—————————————————————————————————————————————————————————————————————————5
x,y,z = map(int, input().split())
a = [x,y,z]
a.sort()
print(a)# 练习6:斐波那契数列。———————————————————————————————————————————————————————————————————————————————————————————————————6
fib = [1, 1]
for i in range(20):fib.append(fib[-1] + fib[-2])
print(fib)# 练习7:将一个列表的数据复制到另一个列表中。—————————————————————————————————————————————————————————————————————————————————7
a = [i for i in range(20)]
b = a.copy()    # b=a, b=a[:]
print(b)# 练习8:输出 9*9 乘法口诀表。————————————————————————————————————————————————————————————————————————————————————————————8
for i in range(1,10):for j in range(1,i+1):print(f'{j}*{i}={i*j}',end='\t')print()# 练习9:暂停一秒输出。———————————————————————————————————————————————————————————————————————————————————————————————————9
import time
time1 = time.time()
time.sleep(1)
time2 = time.time()
print(time2-time1)# 练习10:暂停一秒输出,并格式化当前时间。———————————————————————————————————————————————————————————————————————————————————10
import time
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
time.sleep(1)
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))# 练习11:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子。————————————————————————————11
# 假如兔子都不死,问每个月的兔子总数为多少?
a = b =1
for i in range(1,22):print('%12ld %12ld' % (a,b),end='')if i % 3 == 0:print()a,b = a+b, a+2*b# 练习12:判断101-200之间有多少个素数,并输出所有素数。———————————————————————————————————————————————————————————————————————12
sum = 0
for i in range(101, 201):for j in range(2, i):if i % j == 0:breakelse:sum += 1print(i, end=' ')
print(f'\n共{sum}个素数')# 练习13:打印出所有的"水仙花数"。—————————————————————————————————————————————————————————————————————————————————————————13
# 所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
for i in range(100, 1000):a = i // 100b = i % 100 // 10c = i % 10if a**3 + b**3 + c**3 == i :print(i, end=' ')# 练习14:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。——————————————————————————————————————————————————————————————14
number = int(input('输入数字:'))
dec = []
i = 2
numtmp = number
while(numtmp != 1):if numtmp % i == 0:numtmp = numtmp // idec.append(i)i = 2else:i += 1
else:if numtmp != 1:dec.append(numtmp)
print(str(number) + ' = ', end='')
for i in dec:print(i, end=' * ')
print('\b\b ')# 练习15:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。———————————————————————15
score = int(input('成绩:'))
if score >= 90:grade = 'A'
elif score >= 60:grade = 'B'
else:grade = 'C'
print(f'{score} is {grade}')    # print('%d is %s' % (score,grade))# 练习16:输出指定格式的日期。—————————————————————————————————————————————————————————————————————————————————————————————16
import datetime
# 输出今日日期,格式为 yyyy.mm.dd
print(datetime.date.today().strftime('%Y.%m.%d'))
# 创建日期对象
ayhdate = datetime.date(2008, 8, 8)
print(ayhdate.strftime('%Y.%m.%d'))
# 日期算术运算
ayhafter = ayhdate + datetime.timedelta(days=100)
print(ayhafter.strftime('%Y.%m.%d'))
# 日期替换
ayhdate = ayhdate.replace(year=ayhdate.year + 4)
print(ayhdate.strftime('%Y.%m.%d'))# 练习17:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。———————————————————————————————————————————————————————17
digit = alpha = space = other = 0
a = input('输入字符串:')
for i in a:if i.isdigit():digit+=1elif i.isalpha():alpha+=1elif i==' ':space+=1else:other+=1
# 1122aabb  ??::\\550088  99ccDDEE你好你好你好ff  --@@
print(f'含有中英文字符{alpha}个,空格{space}个,数字{digit}个,其他字符{other}个')# 练习18:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。—————————18
a,n = map(int,input('请输入a与n:').split())
t = s = 0
for i in range(n):t = t * 10 + as += t
print(s)# 练习19:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。——————————————————————————————19
for i in range(1,1000):divisor = []divsum = 0for j in range(1,i):if i%j==0:divisor.append(j)divsum += jif divsum == i:print(f'{divsum} = ', end='')for i in divisor:print(f'{i} + ', end='')print('\b\b ')# 练习20:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?————————————————20
top = 100
distance = -100
for i in range(10):distance += top * 2top /= 2
print(f'第10次落地时,共经过{distance}米。第10次反弹{top}米。')# 练习21:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。————————21
# 以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
sum = 1
for i in range(9):sum = (sum + 1) * 2
print(sum)# 练习22:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。—————————————————————————————————————22
# 有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
dict1 = {'a':1, 'b':2, 'c':3}
dict2 = {'x':0 ,'y':0, 'z':0}
dict2.update({'y':dict1['a'],'z':dict1['a']})
dict2.update({'y':dict1['c']})
for i,j in dict1.items():for s,t in dict2.items():if t==0:dict2[s]=dict1['b']if j==t:print(f'{i}——{s}')# 练习23:打印出如下图案(菱形):——————————————————————————————————————————————————————————————————————————————————————————23
#    *
#   ***
#  *****
# *******
#  *****
#   ***
#    *
row = 7
for i in range(row):for j in range(abs(row//2-i)):print(' ', end='')for j in range(row - 2 * abs(row//2-i)):print('*', end='')print()# 练习24:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。————————————————————————————————————————————24
a = 2
b = 1
sum = 0
for i in range(20):sum +=a/ba,b = a+b,a
print(f'2/1 + 3/2 + 5/3 + 8/5 + 13/8 + 21/13 + ... = {sum}')# 练习25:求1+2!+3!+...+20!的和。———————————————————————————————————————————————————————————————————————————————————————25
t = 1
sum = 0
for i in range(20):t *= i+1sum +=t
print(f'1! + 2! + 3! + ... + 20! = {sum}')# 练习26:利用递归方法求5!。——————————————————————————————————————————————————————————————————————————————————————————————26
def mul(num):if num>1:return num * mul(num-1)else:return 1
print(mul(5))# 练习27:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。———————————————————————————————————————————————————————————27
def inv(str):if str!='':inv(str[1:])print(str[0], end='')else:return
str = input('请输入字符串:')
inv(str)# 练习28:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。—————————28
# 问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
def age(people):if people!=1:return age(people-1)+2else:return 10
print(age(5))# 练习29:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。—————————————————————————————————————————————————29
number = str(int(input('请输入一个不多于5位的正整数:')))
bit = len(number)
print(f'它是{bit}位数')
for i in range(bit-1,-1,-1):print(number[i], end='')
print()# 练习30:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。———————————————————————————————————————————30
number = str(int(input('请输入一个五位数:')))
print(number + '不'* (number[0]!=number[-1] or number[1]!=number[-2]) + '是回文数')# 练习31:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。———————————————————————————————————————31
week = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
one = input('请输入第一个字母:')
s = 0
t = []
for i in week:if i[0]==one:s += 1t.append(i)
print(t)
if s < 1:print('ERROR!')
elif s > 1:two = input('请输入第二个字母:')for i in t:if i[1] == two:print(i)# 练习32:按相反的顺序输出列表的值。————————————————————————————————————————————————————————————————————————————————————————32
a = ['临', '兵', '斗', '者', '皆', '阵', '列', '前', '行']
for i in a[::-1]:print(i,end=' '*4)# 练习33:按逗号分隔列表。————————————————————————————————————————————————————————————————————————————————————————————————33
a = ['临', '兵', '斗', '者', '皆', '阵', '列', '前', '行']
str = ','.join(str(i) for i in a)
print(str)# 练习34:练习函数调用。—————————————————————————————————————————————————————————————————————————————————————————————————34
def newline_str(str):for i in range(len(str)):print(str[i])
def many_print(str):for i in range(3):newline_str(str)
if __name__ == '__main__':many_print('面对疾风吧!')# 练习35:文本颜色设置。—————————————————————————————————————————————————————————————————————————————————————————————————35
class bcolors:HEADER = '\033[95m'OKBLUE = '\033[94m'OKGREEN = '\033[92m'WARNING = '\033[93m'FAIL = '\033[91m'ENDC = '\033[0m'BOLD = '\033[1m'UNDERLINE = '\033[4m'
print(bcolors.WARNING + "警告的颜色字体?" + bcolors.ENDC)# 练习36:求100之内的素数。———————————————————————————————————————————————————————————————————————————————————————————————36
for i in range(2, 101):for j in range(2, i):if i % j == 0:breakelse:print(i, end=' ')# 练习37:对10个数进行排序。——————————————————————————————————————————————————————————————————————————————————————————————37
num = list(map(int,input('请输入十个数:').split()))
num.sort()
print('由大到小排序为:', end='')
for i in num:print(i, end=' ')# 练习38:求一个3*3矩阵主对角线元素之和。———————————————————————————————————————————————————————————————————————————————————38
a = []
print('请输入3*3的矩阵:')
for i in range(3):a.append(list(map(int,input().split(None,3)[:3])))
print(f'主对角线元素之和为:{a[0][0]+a[1][1]+a[2][2]}')# 练习39:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。————————————————————————————————————————————————————39
num = list(map(int,input('请输入十个数:').split()))
ins = int(input('请输入待插入的数:'))
num.append(ins)
num.sort(reverse=1*(num[0]>num[-1]))
for i in num:print(i, end=' ')# 练习40:将一个数组逆序输出。—————————————————————————————————————————————————————————————————————————————————————————————40
a = [9, 6, 5, 4, 1]
print('原列表:', a)
a.sort(reverse=1*(a[0]<a[-1]))
print('倒序后:', a)# 练习41:模仿静态变量的用法。—————————————————————————————————————————————————————————————————————————————————————————————41
def varfunc():var = 0print('var = %d' % var)var += 1
for i in range(3):varfunc()class Static:StaticVar = 5def varfunc(self):self.StaticVar += 1print(self.StaticVar)
print(Static.StaticVar)
a = Static()
for i in range(3):a.varfunc()# 练习42:学习使用auto定义变量的用法。—————————————————————————————————————————————————————————————————————————————————————42
num = 2
def autofunc():num = 1print('internal block num = %d' % num)num += 1
for i in range(3):print('The num = %d' % num)num += 1autofunc()# 练习43:模仿静态变量(static)另一案例。———————————————————————————————————————————————————————————————————————————————————43
class Num:nNum = 1def inc(self):self.nNum += 1print('nNum = %d' % self.nNum)
if __name__ == '__main__':nNum = 2inst = Num()for i in range(3):nNum += 1print('The num = %d' % nNum)inst.inc()# 练习44:两个 3 行 3 列的矩阵,实现其对应位置的数据相加,并返回一个新矩阵:——————————————————————————————————————————————————————44
# X = [[12,7, 3],
#      [4, 5, 6],
#      [7, 8, 9]]
# Y = [[5, 8, 1],
#      [6, 7, 3],
#      [4, 5, 9]]
x = [[12,7, 3],[4, 5, 6],[7, 8, 9]]
y = [[5, 8, 1],[6, 7, 3],[4, 5, 9]]
z = []
for i in range(3):z.append([])for j in range(3):z[i].append(x[i][j]+y[i][j])
for i in z:print(i)# 练习45:统计 1 到 100 之和。———————————————————————————————————————————————————————————————————————————————————————————45
from functools import reduce
print('1到100之和为:',reduce(lambda x,y:x+y, [i for i in range(101)]))# 练习46:求输入数字的平方,如果平方运算后小于 50 则退出。—————————————————————————————————————————————————————————————————————46
print('求输入数字的平方,若平方运算后小于50,程序将停止运行。')
num = int(input('请输入一个数字:'))
print('其平方为:', num ** 2)
while(num ** 2 >= 50):num = int(input('请输入一个数字:'))print('其平方为:', num ** 2)# 练习47:两个变量值互换。————————————————————————————————————————————————————————————————————————————————————————————————47
a, b = 5, 10
a, b = b, a
print(a, b)# 练习48:数字比较。—————————————————————————————————————————————————————————————————————————————————————————————————————48
i = 5
j = 10
if i > j:print(f'{i}大于{j}')
elif i < j:print(f'{i}小于{j}')
else:print(f'{i}等于{j}')# 练习49:使用lambda来创建匿名函数。———————————————————————————————————————————————————————————————————————————————————————49
maximum = lambda x, y: (x > y) * x + (x < y) * y
minimum = lambda x, y: (x > y) * y + (x < y) * x
a = 5
b = 10
print('The larger one is %d' % maximum(a, b))
print('The lower one is %d' % minimum(a, b))# 练习50:输出一个随机数。————————————————————————————————————————————————————————————————————————————————————————————————50
import random
a = random.randint(0, 99)
print(a)# 练习51:学习使用按位与 & 。—————————————————————————————————————————————————————————————————————————————————————————————51
a = 0b1101
b = a & 11
print('a & b = %d' % b)
b &= 7
print('a & b = %d' % b)# 练习52:学习使用按位或 | 。—————————————————————————————————————————————————————————————————————————————————————————————52
a = 0b1001
b = a | 11
print('a | b = %d' % b)
b |= 7
print('a | b = %d' % b)# 练习53:学习使用按位异或 ^ 。———————————————————————————————————————————————————————————————————————————————————————————53
a = 0b1001
b = a ^ 0b1011
print(f'a ^ b = {bin(b)}')
b ^= 0b1111
print(f'a ^ b = {bin(b)}')# 练习54:取一个整数a从右端开始的4〜7位。———————————————————————————————————————————————————————————————————————————————————54
a = int(input('input a number:\n'))
# 682 = 10 1010 1010
b = a >> 4
c = ~(~0 << 4)
d = b & c
print(bin(a), bin(b), bin(c), bin(d))# 练习55:学习使用按位取反~。—————————————————————————————————————————————————————————————————————————————————————————————55
a = 0b101010
b = ~ a
print(bin(a), bin(b))
print(a, b),
# 计算过程:
#     转二进制:0 101010
#     计算补码:0 101010
#     按位取反:1 010101
# 转为原码:
#     按位取反:1 101010
#     末位加 1:1 101011
#     符号位为 1 是负数,即 -43# 练习56:画图,学用circle画圆形。————————————————————————————————————————————————————————————————————————————————————————56
import turtle
turtle.color('blue')
turtle.pensize(5)
turtle.speed(10)
for i in range(0,210,10):turtle.circle(i)turtle.penup()turtle.right(90)turtle.forward(10)turtle.left(90)turtle.pendown()
turtle.done()# 练习57:画图,学用line画直线。——————————————————————————————————————————————————————————————————————————————————————————57
import turtle
turtle.setup(600, 600)
turtle.color('blue')
turtle.pensize(5)
turtle.speed(10)
turtle.penup()
turtle.goto(-250, 250)
turtle.pendown()
for i in range(0,250,10):print(i)turtle.forward(500)turtle.penup()turtle.right(90)turtle.forward(10)turtle.right(90)turtle.pendown()turtle.forward(500)turtle.penup()turtle.left(90)turtle.forward(10)turtle.left(90)turtle.pendown()
turtle.done()# 练习58:画图,学用rectangle画方形。—————————————————————————————————————————————————————————————————————————————————————58
import turtle
turtle.color('grey')
turtle.pensize(5)
turtle.speed(10)
for i in range(0,400,20):for j in range(4):turtle.right(90)turtle.forward(i)turtle.penup()turtle.forward(10)turtle.left(90)turtle.forward(10)turtle.right(90)turtle.pendown()
turtle.done()# 练习59:画图,综合例子。 ——————————————————————————————————————————————————————————————————————————————————————————————59
# -*- coding:utf-8 –*-
# 用turtlr画时钟
# 以自定义shape的方式实现
# 当然,使用多只turtle来完全重绘的方法实现,也没有问题。
# 如果需要重绘方法的代码,请加公众号:see_goal 留言“turtle时钟”
import turtle as t
import datetime as ddef skip(step):  # 抬笔,跳到一个地方t.penup()t.forward(step)t.pendown()def drawClock(radius):  # 画表盘t.speed(0)t.mode("logo")  # 以Logo坐标、角度方式t.hideturtle()t.pensize(7)t.home()  # 回到圆点for j in range(60):skip(radius)if (j % 5 == 0):t.forward(20)skip(-radius - 20)else:t.dot(5)skip(-radius)t.right(6)def makePoint(pointName, len):  # 钟的指针,时针、分针、秒针t.penup()t.home()t.begin_poly()t.back(0.1 * len)t.forward(len * 1.1)t.end_poly()poly = t.get_poly()t.register_shape(pointName, poly)  # 注册为一个shapedef drawPoint():  # 画指针global hourPoint, minPoint, secPoint, fontWritermakePoint("hourPoint", 100)makePoint("minPoint", 120)makePoint("secPoint", 140)hourPoint = t.Pen()  # 每个指针是一只新turtlehourPoint.shape("hourPoint")hourPoint.shapesize(1, 1, 6)minPoint = t.Pen()minPoint.shape("minPoint")minPoint.shapesize(1, 1, 4)secPoint = t.Pen()secPoint.shape("secPoint")secPoint.pencolor('red')fontWriter = t.Pen()fontWriter.pencolor('gray')fontWriter.hideturtle()def getWeekName(weekday):weekName = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']return weekName[weekday]def getDate(year, month, day):return "%s-%s-%s" % (year, month, day)def realTime():curr = d.datetime.now()curr_year = curr.yearcurr_month = curr.monthcurr_day = curr.daycurr_hour = curr.hourcurr_minute = curr.minutecurr_second = curr.secondcurr_weekday = curr.weekday()t.tracer(False)secPoint.setheading(360 / 60 * curr_second)minPoint.setheading(360 / 60 * curr_minute)hourPoint.setheading(360 / 12 * curr_hour + 30 / 60 * curr_minute)fontWriter.clear()fontWriter.home()fontWriter.penup()fontWriter.forward(80)# 用turtle写文字fontWriter.write(getWeekName(curr_weekday), align="center", font=("Courier", 14, "bold"))fontWriter.forward(-160)fontWriter.write(getDate(curr_year, curr_month, curr_day), align="center", font=("Courier", 14, "bold"))t.tracer(True)print(curr_second)t.ontimer(realTime, 100)  # 每隔100毫秒调用一次realTime()def main():t.tracer(False)drawClock(160)drawPoint()realTime()t.tracer(True)t.mainloop()if __name__ == '__main__':main()# 练习60:计算字符串长度。————————————————————————————————————————————————————————————————————————————————————————————————60
a = '123abc   123哈哈abc@@##&&\t'
print(len(a))# 练习61:打印出杨辉三角形(要求打印出10行如下图)。——————————————————————————————————————————————————————————————————————————61
# 1
# 1 1
# 1 2 1
# 1 3 3 1
# 1 4 6 4 1
# 1 5 10 10 5 1
# 1 6 15 20 15 6 1
# 1 7 21 35 35 21 7 1
# 1 8 28 56 70 56 28 8 1
# 1 9 36 84 126 126 84 36 9 1
a = []
for i in range(11):a.append([])for j in range(11):if j == 0:a[i].append(1)elif j > i:a[i].append(0)else:a[i].append(a[i-1][j-1]+a[i-1][j])
for i in a:for j in range(len(i)):if i[j] == 0:b = i[:j]for k in b:print(k, end=' ')print()break# 练习62:查找字符串。———————————————————————————————————————————————————————————————————————————————————————————————————62
str1 = 'abcdefg'
str2 = 'cde'
print (str1.find(str2))# 练习63:画椭圆。——————————————————————————————————————————————————————————————————————————————————————————————————————63
import turtle as t
t.pendown()
t.setheading(90)
len = 1
for i in range(2):for j in range(60):if j < 30:len += 0.2else:len -= 0.2t.forward(len)t.left(3)
t.penup()
t.done()# 练习64:利用ellipse和rectangle画图。———————————————————————————————————————————————————————————————————————————————————64
# skip# 练习65:一个最优美的图案。——————————————————————————————————————————————————————————————————————————————————————————————65
import turtle
turtle.setup(600, 600)
turtle.color('green')
turtle.pensize(3)
turtle.speed(10)
turtle.penup()
turtle.setpos(-250, 0)
turtle.pendown()
for i in range(72):turtle.forward(500)turtle.right(175)
turtle.done()# 练习66:输入3个数a,b,c,按大小顺序输出。——————————————————————————————————————————————————————————————————————————————————66
a = list(map(int, input('请输入三个数:').split()))
a.sort()
for i in a:print(i, end=' ')# 练习67:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。————————————————————————————————————————————————————67
import copy
a = list(map(int, input('请输入数组:').split()))
b = copy.deepcopy(a)
b.sort()
for i in range(len(a)):if a[i]==b[-1]:a[0], a[i] = b[-1], a[0]if a[i]==b[0]:a[-1], a[i] = b[0], a[-1]
print(a)# 练习68:有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数—————————————————————————————————————————————68
n, m = map(int, input('请输入n和m:').split())
a = list(map(int, input('请输入待处理列表:').split()))
b = []
for i in range(n):b.append(a[-m+i])
print(b)# 练习69:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。———————————————69
n = int(input('请输入总人数:'))
num = []
for i in range(n):num.append(i + 1)
i = k = m = 0
while m < n - 1:if num[i] != 0: k += 1if k == 3:num[i] = 0k = 0m += 1i += 1if i == n: i = 0
for i in num:if i!=0:print(i)# 练习70:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。———————————————————————————————————————————————————70
def lenstr(str):return len(str)
if __name__ == '__main__':print(lenstr('123   abcABC哈哈哈@#$\t\n\b'))# 练习71:编写input()和output()函数输入,输出5个学生的数据记录。——————————————————————————————————————————————————————————————71
def inputstd(stdarr, i):name = input(f'请输入第{i+1}位学生的姓名:')age = int(input('请输入学生年龄:'))stdarr[i].append(name)stdarr[i].append(age)for j in range(4):score = int(input(f'请输入第{j+1}科分数:'))stdarr[i].append(score)return stdarr
def outputstd(stdarr, i):print(f'第{i+1}位学生——姓名:{stdarr[i][0]},年龄:{stdarr[i][1]},四科分数为:', end='')for j in range(4):print(stdarr[i][2+j], end='、'*(j!=3))print()
if __name__ == '__main__':n = 2stdarr = []for i in range(n):stdarr.append([])tmp = inputstd(stdarr, i)for i in range(n):outputstd(tmp, i)# 练习72:创建一个链表。—————————————————————————————————————————————————————————————————————————————————————————————————72
num = []
for i in range(5):n = int(input('请输入一个整数:'))num.append(n)
print(num)# 练习73:反向输出一个链表。——————————————————————————————————————————————————————————————————————————————————————————————73
num = [6, 5, 3, 4, 2]
num.reverse()
print(num)# 练习74:列表排序及连接。————————————————————————————————————————————————————————————————————————————————————————————————74
a = [3, 6, 9, 4, 2]
b = [4, 8, 16, 9, 2]
b.sort()
a.extend(b)
print(a, b)# 练习75:放松一下,算一道简单的题目。——————————————————————————————————————————————————————————————————————————————————————75
for i in range(5):n = 0if i != 1: n += 1if i == 3: n += 1if i == 4: n += 1if i != 4: n += 1if n == 3: print(64 + i)
# i=3,67# 练习76:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n—————————————————————————76
def ou(n):s = 0for i in range(2, n+2, 2):s += 1 / ireturn s
def ji(n):s = 0for i in range(1, n+1, 2):s += 1 / ireturn s
if __name__ == '__main__':n = int(input('请输入一个正整数:'))s = (n % 2 == 0) and ou(n) or ji(n)print(s)# 练习77:循环输出列表———————————————————————————————————————————————————————————————————————————————————————————————————77
s = ["man", "woman", "girl", "boy", "sister"]
for i in s:print(i)# 练习78:找到年龄最大的人,并输出。请找出程序中有什么问题。————————————————————————————————————————————————————————————————————78
person = {"li": 18, "wang": 50, "zhang": 20, "sun": 22}
m = 'li'
for key in person.keys():if person[m] < person[key]:m = key
print('%s,%d' % (m, person[m]))# 练习79:字符串排序。———————————————————————————————————————————————————————————————————————————————————————————————————79
str = list(map(str, input('请输入待排序的字符串:').split()))
str.sort()
print(str)# 练习80:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。——————————————80
# 第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
# 问海滩上原来最少有多少个桃子?
num = int(input("输入猴子的数目:"))
def peach(n):if n == num:return 4 * x  # 最后剩的桃子的数目else:return peach(n + 1) * 5 / 4 + 1
x = 1
while 1:count = 0for i in range(1, num):if peach(i) % 4 == 0:count = count + 1if count == num - 1:print("海滩上原来最少有 %d 个桃子" % int(peach(0)))breakelse:x = x + 1# 练习81:809*??=800*??+9*?? 其中??代表的两位数, 809*??为四位数,8*??的结果为两位数,9*??的结果为3位数。—————————————————————————81
# 求??代表的两位数,及809*??后的结果。
for i in range(10,100):if len(str(809*i))==4 and len(str(8*i))==2 and len(str(9*i))==3:print(f'该数为:{i}\n{809 * i} = 800 * {i} + 9 * {i}')# 练习82:八进制转换为十进制——————————————————————————————————————————————————————————————————————————————————————————————82
a = int(input('请输入八进制数:'), 8)
print('其十进制为:', a)# 练习83:求0—7所能组成的奇数个数。————————————————————————————————————————————————————————————————————————————————————————83
sum = 0
for i in range(1, 8):if i == 1:t = 4elif i == 2:t = 4 * 7else:t = 4 * 7 * 8**(i-2)sum += tprint(f'组成{i}位数有{sum}个奇数。')# 练习84:连接字符串。———————————————————————————————————————————————————————————————————————————————————————————————————84
a = ['临', '兵', '斗', '者']
b = ['皆', '阵', '列', '前', '行']
a.extend(b)
str = ','.join(a)
print(str)# 练习85:输入一个奇数,然后判断最少几个 9 除于该数的结果为整数。———————————————————————————————————————————————————————————————85
num = int(input('请输入一个奇数:'))
nine = 9
while nine % num != 0 :nine = nine * 10 + 9
print(f'需要{len(str(nine))}个 9\n{nine} / {num} = {nine//num}')# 练习86:两个字符串连接程序。————————————————————————————————————————————————————————————————————————————————————————————86
a = '临兵斗者'
b = '皆阵列前行'
a += b
print(a)# 练习87:回答结果(结构体变量传递)。——————————————————————————————————————————————————————————————————————————————————————87
class student:x = 0c = 0
def f(stu):stu.x = 20stu.c = 'c'
a = student()
a.x = 3
a.c = 'a'
f(a)
print(a.x,a.c)# 练习88:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。———————————————————————————————————————————————————————88
a = list(map(int, input('请输入七个整数:').split()[:7]))
for i in a:print(f'{i}:' + '*'*i)# 练习89:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,————————————————————————————————————————————————————89
# 加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
num = int(input('请输入一个四位数:'))
bit1 = [0, 0, 0, 0]
bit2 = [0, 0, 0, 0]
for i in range(4):bit1[i] = int(str(num)[i])bit2[i] = (bit1[i] + 5) % 10
bit2[0], bit2[1], bit2[2], bit2[3] = bit2[3], bit2[2], bit2[1], bit2[0]
print('加密后该数为:', bit2[0]*1000 + bit2[1]*100 + bit2[2]*10 + bit2[3])# 练习90:列表使用实例。—————————————————————————————————————————————————————————————————————————————————————————————————90
# list
# 新建列表
testList = [10086, '中国移动', [1, 2, 4, 5]]
# 访问列表长度
print(len(testList))
# 到列表结尾
print(testList[1:])
# 向列表添加元素
testList.append('I\'m new here!')
print(len(testList))
print(testList[-1])
# 弹出列表的第二个元素
print(testList.pop(1))
print(len(testList))
print(testList)
# list comprehension
# 后面有介绍,暂时掠过
matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]
print(matrix)
print(matrix[1])
col2 = [row[1] for row in matrix]  # get a  column from a matrix
print(col2)
col2even = [row[1] for row in matrix if row[1] % 2 == 0]  # filter odd item
print(col2even)# 练习91:时间函数举例1。—————————————————————————————————————————————————————————————————————————————————————————————————91
import time
print(time.ctime(time.time()))
print(time.asctime(time.localtime(time.time())))
print(time.asctime(time.gmtime(time.time())))# 练习92:时间函数举例2。—————————————————————————————————————————————————————————————————————————————————————————————————92
import time
start = time.time()
time.sleep(2)
end = time.time()
print(end - start)# 练习93:时间函数举例3。—————————————————————————————————————————————————————————————————————————————————————————————————93
import time
start = time.perf_counter()
time.sleep(2)
end = time.perf_counter()
print('Different is %6.3f' % (end - start))# 练习94:时间函数举例4,一个猜数游戏,判断一个人反应快慢。——————————————————————————————————————————————————————————————————————94
import time
import random
play_it = input('你准备好开始游戏了吗?(请输入 \'y\' 或 \'n\'):')
while play_it == 'y':i = random.randint(0, 100)print('——————————猜数字游戏——————————')start = time.perf_counter()guess = int(input('请输入猜测的值:'))while guess != i:if guess > i:guess = int(input('大了,猜小一点:'))else:guess = int(input('小了,猜大一点:'))end = time.perf_counter()var = (end - start) / 18.2if var < 15:grade = '优秀'elif var < 25:grade = '一般'else:grade = '较差'print('恭喜!待猜数字为:%d' % i)print('本次游戏反应数值为:%6.3f,评定等级:%s' % (var,grade))play_it = input('\n你准备好开始新一轮游戏了吗?(请输入 \'y\' 或 \'n\'):')# 练习95:字符串日期转换为易读的日期格式。———————————————————————————————————————————————————————————————————————————————————95
import time
a = time.strptime('Aug 28 2015 12:00AM', '%b %d %Y %I:%M%p')
a = time.strftime('%Y-%m-%d %H:%M:%S', a)
print(a)# 练习96:计算字符串中子串出现的次数。——————————————————————————————————————————————————————————————————————————————————————96
str1 = input('请输入一个字符串:')
str2 = input('请输入一个子字符串:')
ncount = str1.count(str2)
print(ncount)# 练习97:从键盘输入一些字符,逐个把它们写到磁盘文件上,直到输入一个 # 为止。——————————————————————————————————————————————————————97
filename = input('输入文件名:')
fp = open(filename , "w+")
ch = ''
while '#' not in ch:fp.write(ch)ch = input('输入字符串:')
fp.close()# 练习98:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。————————————————————————————————————98
fp = open('test.txt' , "w")
ch = input('输入字符串:')
# abcdefg123456哈哈哈哈哈@#¥%……&hijklmnopqAAAAAAAAAAAAAAAA***15615616啊啊谁法师的
fp.write(ch.upper())
fp.close()# 练习99:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中。—————————————————————————99
fp = open('A.txt' , "r")
ch1 = fp.read()
fp.close()
fp = open('B.txt' , "r")
ch2 = fp.read()
fp.close()
fp = open('C.txt' , "w")
ch = ch1 + ch2
l=list(ch)
l.sort()
ch="".join(l)
fp.write(ch)
fp.close()# 练习100:列表转换为字典。——————————————————————————————————————————————————————————————————————————————————————————————100
a = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
b = [111, 222, 333, 444, 555, 666, 777]
print(dict(zip(a, b)))


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部