其他一些练手小程序

1 区间数字判断

  1 import time
  2 
  3 # 计算一定区间内内的相关操作数据
  4 print('\033[1;33m================> 请输入计算区间,区间长度请勿超过3万,否则老夫的计算机...... <=====================\033[0m')
  5 start = int(input('\033[1;32m请输入计算前端区间:\033[0m').strip())
  6 end = int(input('\033[1;32m请输入计算后端区间:\033[0m').strip())
  7 while True:
  8     cho_dic = """
  9     '1':'质数、合数'
 10     '2':'偶数、奇数'
 11     '3':'完全数'
 12     '4':'斐波那契数列'
 13     'QUIT':'退出系统'
 14     """
 15     print(cho_dic)
 16     cho = input('请输入将要进行的操作代号:')
 17     # 质数、合数
 18     if cho == '1':
 19         str_time = time.time()
 20         print('正在计算中,请稍等...\n')
 21         zhi_li = []
 22         for num in range(start, end):
 23             for i in range(2, num):
 24                 if num % i == 0:
 25                     break
 26             else:
 27                 if num >= 2:
 28                     zhi_li.append(num)
 29         if start == 0 or start == 1:
 30             he_li = [i for i in range(2, end)]
 31         else:
 32             he_li = [i for i in range(start, end)]
 33         for i in zhi_li:
 34             if i in he_li:
 35                 he_li.remove(i)
 36         print('区间{0}-{1}的质数一共有{2}位,分别为:\n{3}'.format(start, end, len(zhi_li), zhi_li))
 37         print('区间{0}-{1}的合数一共有{2}位,分别为:\n{3}'.format(start, end, len(he_li), he_li))
 38         end_time = time.time()
 39         time_ac = round(end_time - str_time, 4)
 40         print('\n本次计算共耗时[%s]秒\n' % time_ac)
 41     # 偶数、奇数
 42     if cho == '2':
 43         str_time = time.time()
 44         print('正在计算中,请稍等...\n')
 45         ji_li = []
 46         ou_li = []
 47         for i in range(start, end):
 48             if i % 2 == 0:
 49                 ou_li.append(i)
 50             else:
 51                 ji_li.append(i)
 52         print('区间{0}-{1}的偶数一共有{2}位,分别为:\n{3}'.format(start, end, len(ou_li), ou_li))
 53         print('区间{0}-{1}的奇数一共有{2}位,分别为:\n{3}'.format(start, end, len(ji_li), ji_li))
 54         end_time = time.time()
 55         time_ac = round(end_time - str_time, 4)
 56         print('\n本次计算共耗时[%s]秒\n' % time_ac)
 57     # 完全数
 58     def s(aa, bb):
 59         l = []
 60         for n in range(aa, bb):
 61             s = 0
 62             for a in range(1, n):
 63                 if n % a == 0:
 64                     s = s + a
 65             if n == s:
 66                 l.append(n)
 67         return l
 68     if cho == '3':
 69         str_time = time.time()
 70         print('正在计算中,请稍等...\n')
 71         o = s(start, end)
 72         if 0 in o:
 73             o.remove(0)
 74         print('区间{0}-{1}的完全数一共有{2}位,分别为:\n{3}'.format(start, end, len(o), o))
 75         end_time = time.time()
 76         time_ac = round(end_time - str_time, 4)
 77         print('\n本次计算共耗时[%s]秒\n' % time_ac)
 78     # 斐波那契数列
 79     def feiBo():
 80         num = end - start + 1
 81         a = 0
 82         b = 1
 83         m = 0
 84         li = []
 85         while m < num:
 86             a, b = b, a + b
 87             m += 1
 88             if a >= start and a <= end:
 89                 li.append(a)
 90         return li
 91     if cho == '4':
 92         str_time = time.time()
 93         print('正在计算中,请稍等...\n')
 94         ll = feiBo()
 95         print('区间{0}-{1}的斐波那契数列一共有{2}位,分别为:\n{3}'.format(start, end, len(ll), ll))
 96         end_time = time.time()
 97         time_ac = round(end_time - str_time, 4)
 98         print('\n本次计算共耗时[%s]秒\n' % time_ac)
 99     # 退出
100     if str.upper(cho) == 'QUIT':
101         print('\n\n\033[1;33m系统退出成功...\033[0m\n\n')
102         break
View Code

2 随机图片验证码

 1 import random
 2 from PIL import Image, ImageDraw, ImageFont
 3 
 4 
 5 width = 160
 6 height = 45
 7 # 生成随机颜色
 8 def getRandomColor():
 9     r = random.randint(0, 255)
10     g = random.randint(0, 255)
11     b = random.randint(0, 255)
12     return (r, g ,b)
13 
14 
15 # 生成随机字符
16 def getRandomChar():
17     num = str(random.randint(0, 9))
18     lower = str(chr(random.randint(97, 122)))
19     upper = str(chr(random.randint(65, 90)))
20     random_char = random.choice([num, lower, upper])
21     return random_char
22 
23 
24 
25 # 干扰元素(随机点、随机线条)
26 def drawLine(draw):
27     for i in range(5):
28         x1 = random.randint(0, width)
29         x2 = random.randint(0, width)
30         y1 = random.randint(0, height)
31         y2 = random.randint(0, height)
32         draw.line((x1, y1, x2, y2), fill=getRandomColor())
33 
34 
35 
36 def drawPoint(draw):
37     for i in range(40):
38         x = random.randint(0, width)
39         y = random.randint(0, height)
40         draw.point((x, y), fill=getRandomColor())
41 
42 
43 # 最终图片生成
44 def creatImg():
45     bg_color = getRandomColor()
46     # 创建一张随机背景色图片
47     img = Image.new(mode='RGB', size=(width, height), color=bg_color)
48     # 创建图片画笔,用于描述文字
49     draw = ImageDraw.Draw(img)
50     # 修改字体
51     font = ImageFont.truetype(font='arial.ttf', size=34)
52     for i in range(5):
53         # 随机生成五种颜色和五种字符
54         random_txt = getRandomChar()
55         txt_color = getRandomColor()
56         # 保证字符颜色和背景色不一致
57         while txt_color == bg_color:
58             txt_color = getRandomColor()
59         # 根据坐标填充文字
60         draw.text((10 + 30 * i , 3), text = random_txt, fill=txt_color, font=font)
61         drawLine(draw)
62         drawPoint(draw)
63         with open('test.png', 'wb') as f:
64             img.save(f, format='png')
65 
66 
67 creatImg()
View Code

3 随机文字验证码

 1 import random
 2 import tkinter
 3 
 4 
 5 root = tkinter.Tk()
 6 root.geometry('400x400')
 7 root.title('SkyGrass random')
 8 root.resizable(width=False, height=False)
 9 
10 # # 随机码位数选择
11 label = tkinter.Label(root,text='请在文本框中填入操作的代号',font=('黑体',12),fg='#4F4F4F')
12 label.place(x=75, y=10, width=250, height=30)
13 label_three = tkinter.Label(root,text='1.三位数随机码',font=('黑体',13),fg='#4F4F4F')
14 label_three.place(x=10, y=60)
15 label_four = tkinter.Label(root,text='2.四位数随机码',font=('黑体',13),fg='#4F4F4F')
16 label_four.place(x=210, y=60)
17 label_five = tkinter.Label(root,text='3.五位数随机码',font=('黑体',13),fg='#4F4F4F')
18 label_five.place(x=10, y=100)
19 label_six = tkinter.Label(root,text='4.六位数随机码',font=('黑体',13),fg='#4F4F4F')
20 label_six.place(x=210, y=100)
21 label_change1 = tkinter.Label(root,text='请选择随机码位数:',font=('黑体',12),fg='#4F4F4F')
22 label_change1.place(x=10, y=140)
23 var_num = tkinter.Variable()
24 entry_1 = tkinter.Entry(root,textvariable=var_num,).place(x=155, y=140)
25 
26 # # 是否生成有字母的随机码
27 label_true = tkinter.Label(root,text='A.有字母',font=('黑体',13),fg='#4F4F4F')
28 label_true.place(x=10, y=180)
29 label_false = tkinter.Label(root,text='B.无字母',font=('黑体',13),fg='#4F4F4F')
30 label_false.place(x=210, y=180)
31 label_change2 = tkinter.Label(root,text='请选择有无字母',font=('黑体',12),fg='#4F4F4F')
32 label_change2.place(x=10, y=220)
33 var_mul = tkinter.Variable()
34 entry_2 = tkinter.Entry(root,textvariable=var_mul,).place(x=150, y=220)
35 
36 # # 运行按钮
37 but_run = tkinter.Button(root,text='生成随机码',font=('黑体',11),fg='black',bg='orange',command=lambda:Change_Random())
38 but_run.place(width=120,height=30, x=140, y=260)
39 
40 # # 结果返回界面
41 result = tkinter.Variable()
42 result.set('')
43 label_result = tkinter.Entry(root,font=('黑体',25),textvariable=result)
44 label_result.place(x=50, y=300, width=300, height=80)
45 
46 
47 
48 
49 # # 随机码生成函数
50 def Change_Random():
51     num = var_num.get()
52     mul = var_mul.get()
53     res = ''
54     nn = int(num) + 2
55     for i in range(nn):
56         if mul == 'A':
57             n = random.randint(0, 9)
58             s1 = chr(random.randint(65, 90))
59             s2 = chr(random.randint(97, 122))
60             bar = str(random.choice([n, s1, s2]))
61             res += bar
62             result.set(res)
63         elif mul == 'B':
64             n1 = random.randint(0, 9)
65             n2 = random.randint(0, 9)
66             bar = str(random.choice([n1, n2]))
67             res += bar
68             result.set(res)
69 
70 root.mainloop()
View Code

4 24点游戏

  1 import random
  2 
  3 func1 = []      # 存储用户数据
  4 func2 = []      # 数据全排列
  5 op2 = []        # 运算符全排列
  6 func_op2 = []   # 数据+运算符全排列
  7 result1 = []    # 加上一对括号(括两个数)的全排列
  8 result2 = []    # 加上一对括号(括三个数)的全排列
  9 result3 = []    # 加上两对括号的全排列
 10 result = []     # 最终结果输出列表
 11 result_end = []
 12 result_out = []
 13 
 14 
 15 # 产生四个随机数
 16 def randomNum():
 17     usr = []
 18     num_li = range(1, 13)
 19     usr = random.sample(num_li, 4)
 20     return usr
 21 
 22 
 23 
 24 def gameStart():
 25     # 用户输入的数字全排列并去重后存储进列表func2
 26     func1 = randomNum()
 27     func_dic = {
 28         1:'A', 2:'2', 3:'3', 4:'4', 5:'5',
 29         6:'6', 7:'7', 8:'8', 9:'9', 10:'10',
 30         11:'J', 12:'Q', 13:'K'
 31     }
 32     da = []
 33     name = ['梅花', '黑桃', '红桃', '方片']
 34     for i in func1:
 35         name_num = random.randint(0, 3)
 36         d = name[name_num] + func_dic[i]
 37         da.append(d)
 38     print('卡牌为:\n', da)
 39     for i in func1:
 40         for j in func1:
 41             for k in func1:
 42                 for l in func1:
 43                     if i != j and i != k and i!= l and j != k and j != l and k != l:
 44                         func2.append([i, j, k, l])
 45     # 运算符全排列后去重并存储进列表op2
 46     op1 = ['+', '-', '*', '/']
 47     op = []
 48     for i in op1:
 49         for j in op1:
 50             for k in op1:
 51                 if i != j and i !=j and i !=k and j != k:
 52                     op2.append([i, j ,k])
 53     # 数字+运算符全排列
 54     for num in func2:
 55         for ope in op2:
 56             # 将三个运算符插入到数字列表中
 57             num1 = num.copy()
 58             num1.insert(1, ope[0])
 59             num1.insert(3, ope[1])
 60             num1.insert(5, ope[2])
 61             func_op2.append(num1)
 62     # 加入一对括号后全排列
 63     # 括两个数的括号
 64     for i in range(0, 5, 2):
 65         for res in func_op2:
 66             res1 = res.copy()
 67             res1.insert(i, '(')
 68             res1.insert(i+4, ')')
 69             result1.append(res1)
 70     # 括三个数的括号
 71     for i in range(0, 3, 2):
 72         for res in func_op2:
 73             res2 = res.copy()
 74             res2.insert(i, '(')
 75             res2.insert(i+6, ')')
 76             result2.append(res2)
 77     # 加入两对括号的排列
 78     for res in func_op2:
 79         res3 = res.copy()
 80         res3.insert(0, '(')
 81         res3.insert(4, ')')
 82         res3.insert(6, '(')
 83         res3.insert(10, ')')
 84         result3.append(res3)
 85     # 综合整理
 86     result = result1 + result2 + result3
 87     for res in result:
 88         res = [str(i) for i in res]
 89         result_end.append(''.join(res))
 90     # 计算结果
 91     for end in result_end:
 92         try:
 93             if eval(end) == 24:
 94                 result_out.append(end)
 95         except:
 96             pass
 97     cont = len(result_out) + 1
 98     if len(result_out) == 0:
 99         print('此组卡牌无法得出24点\n请换一组卡牌再次尝试...')
100     else:
101         for i in range(cont):
102             endd = '({0}):{1} = 24'.format(i+1, result_out[i-1])
103             print(endd)
104 
105 
106 gameStart()
View Code

5 简易五子棋

 1 # 创建棋盘的程序
 2 def initBoard():
 3     global board  # 调用全局的board
 4     board = [None] * 16
 5     for i in range(len(board)):
 6         board[i] = ["+ "] * 16
 7 
 8 
 9 # 打印棋盘的程序
10 def printBoard():
11     global board
12     for i in range(len(board)):
13         for j in range(len(board[i])):
14             print(board[i][j], end=" ")
15         print("")
16 
17 
18 # 开始下棋的程序
19 def startGame():
20     global board
21     player = 0
22     while isGameContinue():
23         if player % 2 == 0:
24             # 黑方下棋
25             print("==>黑方下棋")
26             if not playChess(""):
27                 continue
28         else:
29             # 白方下棋
30             print("==>白方下棋")
31             if not playChess(""):
32                 continue
33         player += 1
34 
35 
36 def playChess(chess):
37     # 获取位置
38     x = int(input("==> X=")) - 1
39     y = int(input("==> Y=")) - 1
40     if board[x][y] == "+ ":
41         board[x][y] = chess
42         printBoard()
43         return True  # 落子成功
44     else:
45         print("==> 已有棋子 请重新落子\a")
46         printBoard()
47         return False  # 落子失败
48 
49 
50 def isGameContinue():
51     for i in range(len(board)):
52         for j in range(len(board[i])):
53             if board[i][j] != "+ ":
54                 # 横向
55                 if j <= 11:
56                     if board[i][j] == board[i][j + 1] == board[i][j + 2] == board[i][j + 3] == board[i][j + 4]:
57                         whoWin(i, j)
58                         return False
59                 # 竖向
60                 if i <= 11:
61                     if board[i][j] == board[i + 1][j] == board[i + 2][j] == board[i + 3][j] == board[i + 4][j]:
62                         whoWin(i, j)
63                         return False
64                 # 反斜
65                 if i <= 11 and j <= 11:
66                     if board[i][j] == board[i + 1][j + 1] == board[i + 2][j + 2] == board[i + 3][j + 3] == board[i + 4][
67                         j + 4]:
68                         whoWin(i, j)
69                         return False
70                 # 正斜
71                 if i >= 4 and j <= 11:
72                     if board[i][j] == board[i - 1][j + 1] == board[i - 2][j + 2] == board[i - 3][j + 3] == board[i - 4][
73                         j + 4]:
74                         whoWin(i, j)
75                         return False
76     return True
77 
78 
79 def whoWin(i, j):
80     if board[i][j] == "":
81         print("黑方胜!")
82     else:
83         print("白方胜!")
84     for i in range(10):
85         print("\a")
86 
87 
88 board = []
89 initBoard()
90 printBoard()
91 startGame()
View Code

6 摇骰子猜大小

 1 import random
 2 
 3 
 4 # 产生随机数并且判断大小
 5 def roll_game(roll_poi=None):
 6     while True:
 7         print('\033[4;33m  The Game Is Start... \033[0m')
 8         print('\033[4;33m  You Can Enter 0 To Exit Game... \033[0m')
 9         roll = int(input('Please Enter The Number Of The Roll:\n'))
10         if roll_poi is None:
11             roll_poi = []
12         if roll == 0:
13             print('Exit Game Successful...')
14             break
15         num_li = []
16         for i in range(roll):
17             roll_num = random.randint(1, 6)
18             num_li.append(roll_num)
19         cont = 0
20         for i in num_li:
21             cont = cont + i
22         if cont > 0 and cont < roll * 3 + 1:
23             roll_poi = ['']
24         elif cont > roll * 3 and cont < roll * 6 + 1:
25             roll_poi = ['']
26         # 用户判断
27         usr_in = input('Please enter your chose:\n')
28         if usr_in == roll_poi[0]:
29             print('\033[0;33mThe All Numbers Is %s\033[0m' % num_li)
30             print('\033[0;34mPerfect! You Are Right!\033[0m\n\033[0;34mThe Number_Adds Is %s\033[0m' % cont)
31         elif usr_in != roll_poi[0]:
32             print('\033[0;33mThe All Numbers Is %s\033[0m' % num_li)
33             print('\033[0;31mOh...No! You Are False!\033[0m\n\033[0;31mThe Number_Adds Is %s\033[0m' % cont)
34         roll_poi.clear()
35         print('\n\n=================== PLAY AGAIN ================\n\n')
36 
37 
38 roll_game()
View Code

猜你喜欢

转载自www.cnblogs.com/skygrass0531/p/12298957.html