目录
1、在屏幕上显示跑马灯文字
2、设计一个函数产生指定长度的验证码,验证码由大小写字母和数字构成
3、设计一个函数返回给定文件名的后缀名
4、设计一个函数返回传入的列表中最大和第二大的元素的值
5、计算指定的年月日是这一年的第几天
6、打印杨辉三角
7、双色球选号
8、约瑟夫环问题(需详细搞清楚)
9、井字棋游戏(未解决)
import os
import time
# 在屏幕上显示跑马灯文字
def main():
content = '北京欢迎你...'
while True:
os.system('clsq')
print(content)
time.sleep(0.2)
content = content[1:] + content[0] # 此语句每次将第一个字符放在了最后,从而实现跑马灯效果!!!
if __name__ == '__main__':
main()
import random
def main():
print(generate_code(4))
def generate_code(code_len = 4):
"""
生成指定长度的验证码.
:param code_len: 验证码的长度(默认4个字符)
:return: 由大小写英文字母和数字构成的随机验证码
"""
all_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
last_pos = len(all_chars) - 1
code = ''
for _ in range(code_len): # 循环code_len次,产生一个code_len长度的验证码
index = random.randint(0, last_pos) # 索引根据all_chars字符串产生
code += all_chars[index] # 每个验证码都由all_chars字符串的index得到
# 上面code字符串每次做+运算,即每次在后面添加/拼接一个字母,从而得到一个完整的验证码
return code
if __name__ == '__main__':
main()
import random
def main():
print(get_suffix('abc.exe'))
def get_suffix(filename, has_dot = False):
"""
获取文件名的后缀名
:param filename: 文件名
:param has_dot: 返回的后缀名是否需要带点
:return: 文件的后缀名
"""
pos = filename.rfind('.') # 从右到左查找字符串中出现的第一个指定字符,但返回其从左往右、从0数起的下标。
if 0 < pos < len(filename) - 1: # 如果指定字符不存在,则返回-1
index = pos if has_dot else pos + 1
return filename[index:]
else:
return ''
if __name__ == '__main__':
main()
import random
def main():
# print(max2([1, 3, 5, 7, 100])) # m1,m2默认以元组形式输出
l = [1, 3, 5, 7, 100]
t = tuple(max2(l)) # 返回值类型转换为元组型
l1 = list(max2(l)) # 返回值类型转换为列表型
s = set(max2(l)) # 返回值类型转换为集合型
print(t)
print(l1)
print(s)
def max2(x):
"""
返回传入的列表中最大和第二大的元素的值
:param x: 列表
:return: 返回列表中的两个最大值
"""
m1, m2 = (x[0], x[1]) if x[0] > x[1] else (x[1], x[0]) # m1 > m2
for index in range(2, len(x)):
if x[index] > m1:
m2 = m1
m1 = x[index]
elif x[index] > m2:
m2 = x[index]
return m1, m2
if __name__ == '__main__':
main()
def is_leap_year(year):
"""
判断指定的年份是不是闰年
:param year: 年份
:return: 闰年返回True平年返回False
"""
return year % 4 == 0 and year % 100 != 0 or year % 400 == 0
def which_day(year, month, date):
"""
计算传入的日期是这一年的第几天
:param year: 年
:param month: 月
:param date: 日
:return: 第几天
"""
days_of_month = [ # 列表
[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], # 平年
[31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 闰年
][is_leap_year(year)] # 不是闰年时,得到False,强转为0;否则,强转为1
# print(days_of_month) # 验证days_of_month是哪个列表
total = 0
for index in range(month - 1): # index: 0 ~ month - 1
total += days_of_month[index]
return total + date
def main():
print(which_day(1980, 11, 28))
print(which_day(1981, 12, 31))
print(which_day(2018, 1, 1))
print(which_day(2016, 3, 1))
if __name__ == '__main__':
main()
#include
int sum_day(int month, int day);
int leap(int year);
int main()
{
int year, month, day, days;
printf("input date(year,month,day):");
scanf("%d,%d,%d", &year, &month, &day);
printf("%d/%d/%d ", year, month, day);
days = sum_day(month, day); /* 调用函数sum_day : 按不为闰年的情况算出day。*/
if (leap(year) && month >= 3) /* 调用函数leap : 若为闰年,则leap函数返回0,此if不执行。*/
days = days + 1;
printf("is the %dth day in this year.\n", days);
return 0;
}
int sum_day(int month, int day) /* 函数sum_day:计算日期 */
{
int day_tab[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int i;
for (i = 1; i < month; i++)
day += day_tab[i]; /* 累加所在月之前天数 */
return(day);
}
int leap(int year) /* 函数leap:判断是否为闰年 */
{
return (year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
}
def main():
# num = int(input('Number of rows: ')) # 不知道如何在控制台输入?需要安装什么插件,但是安装不上啊
num = 9
yh = [[]] * num
for row in range(len(yh)):
yh[row] = [None] * (row + 1)
for col in range(len(yh[row])):
if col == 0 or col == row:
yh[row][col] = 1
else:
yh[row][col] = yh[row - 1][col] + yh[row - 1][col - 1]
print yh[row][col], # 这个print语法可以使输出后不换行
print('')
if __name__ == '__main__':
main()
#include
#define N 10
int main()
{
int i, j, a[N][N];
for (i = 0; i < N; i++)
{
a[i][i] = 1;
a[i][0] = 1;
}
for (i = 2; i < N; i++)
for(j = 1; j <= i - 1; j++)
a[i][j] = a[i-1][j-1] + a[i-1][j];
for (i = 0; i < N; i++)
{
for(j = 0; j <= i; j++)
printf("%6d", a[i][j]);
printf("\n");
}
printf("\n");
return 0;
}
from random import randrange, randint, sample
def display(balls):
"""
输出列表中的双色球号码
"""
for index, ball in enumerate(balls):
if index == len(balls) - 1: # 打印最后一个号码(蓝号)时,现在前面输个分隔符‘|’
print ('|'),
print('%02d' % ball),
print('')
def random_select():
"""
随机选择一组号码
"""
red_balls = [x for x in range(1, 34)] # red_balls列表:[1, 2, ... , 33]
selected_balls = [] # 初始化一个空列表
selected_balls = sample(red_balls, 6) # 从序列red_balls中随机抽取6个元素,并将6个元素以list形式返回
selected_balls.sort() # 按照ASCII码升序进行排列
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()
"""
《幸运的基督徒》——
有15个基督徒和15个非基督徒在海上遇险,
为了能让一部分人活下来不得不将其中15个人扔到海里面去。
有个人想了个办法就是大家围成一个圈,
由某个人开始从1报数(报数到9),报到9的人就扔到海里面,
然后其余的、接下来的那个人接着从1开始报数,报到9的人继续扔到海里面,直到扔掉15个人。
由于上帝的保佑,15个基督徒都幸免于难。
问:这些人最开始是怎么站的,请指出哪些位置是基督徒哪些位置是非基督徒。
"""
def main():
persons = [True] * 30 # 创建一个每个元素都是True的列表,代表30个活着的人
counter, index, number = 0, 0, 0
# counter:“已死”的总人数
# index:作为persons的下标,表示某个人
# number:1 ~ 9报数
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('yes' if person else 'no'), # yes表示这个位置是基督教人
if __name__ == '__main__':
main()
"""
在一个3x3的棋盘上,一个玩家用X做棋子,另一个玩家用O做棋子,
谁先在棋盘上的一行、一列或对角线上画满三个棋子,即可获胜;
如果棋盘下满无人胜出,即为平局。
"""
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()