以下内容学习自:https://github.com/jackfrued/Python-100-Days
综合案例
案例1:双色球选号
# -*- coding: utf-8 -*-
"""
Created on Wed Aug 14 09:53:56 2019
@author: fengzi
"""
from random import randrange,randint,sample
def display(balls):
"""
输出列表中的双色球号码
"""
for index, ball in enumerate(balls):
if index == len(balls) - 1:
print("|", end=" ")
print("%02d" % ball, end=" ")
print()
def random_select():
"""
随机选择一组号码
"""
red_balls = [x for x in range(1, 34)]
selected_balls = []
selected_balls = sample(red_balls, 6)
selected_balls.sort()
selected_balls.append(randint(1, 16))
return selected_balls
def main():
n = int(input("机选几注:"))
for _ in range(n):
display(random_select())
if __name__ == "__main__":
main()
- 上面使用random模块的sample函数来实现从列表中选择不重复的n个元素。
综合案例2:约瑟夫环问题
# -*- coding: utf-8 -*-
"""
Created on Wed Aug 14 10:16:08 2019
@author: fengzi
"""
"""
《幸运的基督徒》
有15个基督徒和15个非基督徒在海上遇险,为了能让一部分人活下来不得不将其中15个人扔到海里面去,
有个人想了个办法就是大家围成一个圈,由某个人开始从1报数,报到9的人就扔到海里面,
他后面的人接着从1开始报数,报到9的人继续扔到海里面,直到扔掉15个人。由于上帝的保佑,
15个基督徒都幸免于难,问这些人最开始是怎么站的,哪些位置是基督徒哪些位置是非基督徒。
"""
def main():
persons = [True] * 30
counter, index, number = 0, 0, 0
while counter < 15:
if persons[index]:
number += 1
if number == 9:
persons[index] = False
counter += 1
number = 0
index += 1
index %= 30
for person in persons:
print("基" if person else "非", end= "")
if __name__ == "__main__":
main()
综合案例3:井字棋游戏
# -*- coding: utf-8 -*-
"""
Created on Wed Aug 14 10:27:51 2019
@author: fengzi
"""
import os
def print_board(board):
print(board['TL'] + '|' + board['TM'] + '|' + board['TR'])
print('-+-+-')
print(board['ML'] + '|' + board['MM'] + '|' + board['MR'])
print('-+-+-')
print(board['BL'] + '|' + board['BM'] + '|' + board['BR'])
def main():
init_board = {
'TL': ' ', 'TM': ' ', 'TR': ' ',
'ML': ' ', 'MM': ' ', 'MR': ' ',
'BL': ' ', 'BM': ' ', 'BR': ' '
}
begin = True
while begin:
curr_board = init_board.copy()
begin = False
turn = 'x'
counter = 0
os.system('clear')
print_board(curr_board)
while counter < 9:
move = input('轮到%s走棋, 请输入位置: ' % turn)
if curr_board[move] == '':
counter += 1
curr_board[move] = turn
if turn == 'x':
turn = 'o'
else:
turn = 'x'
os.system('clear')
print_board(curr_board)
choice = input('再玩一局?(yes|no)')
begin = choice == 'yes'
if __name__ == '__main__':
main()
- 此题真的是让我从入门到放弃,哈哈哈,想不明白怎么会KeyError,嗷呜~