1.卡片
k种卡片,有n个同学,每位同学发两张,可以同一种,可能不同,两张卡片没有顺序,没有两个同学是一样的,给定n,请问卡片有多少种?
n=int(input())
k=1
while k*(k+1)<2*n:
k+=1
print(k)
例:
n=2
2
2.排列组合
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
count = 0
print("1、2、3、4可以组成的无重复三位数有:")
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):
print(x,y,z)
count+=1
print("一共%d个数字。"%count)
1、2、3、4可以组成的无重复三位数有:
1 2 3
1 2 4
1 3 2
1 3 4
1 4 2
1 4 3
2 1 3
2 1 4
2 3 1
2 3 4
2 4 1
2 4 3
3 1 2
3 1 4
3 2 1
3 2 4
3 4 1
3 4 2
4 1 2
4 1 3
4 2 1
4 2 3
4 3 1
4 3 2
一共24个数字。
3.求符合要求的完全平方数
一个整数,它加上100和加上268后都是一个完全平方数,请问该数是多少?
import math
for x in range(10000):
a=int(math.sqrt(x + 100))
b=int(math.sqrt(x+268))
if (a*a==x+100) and (b*b==x+268):
print(x)
21
261
1581
4.判断该日期为当年第几天
输入某年某月某日,判断这一天是这一年的第几天?
# 提示用户输入日期
print("请输入日期:")
# 获取用户输入的年份,并转换为整数
x = int(input("年:"))
# 获取用户输入的月份,并转换为整数
y = int(input("月:"))
# 获取用户输入的日期,并转换为整数
z = int(input("日:"))
# 定义一个列表,表示平年每个月的天数
list = [31,28,31,30,31,30,31,31,30,31,30,31]
# 计算到指定月份为止的天数总和(不包括当前月份的天数)
# 注意:这里的list[0:(y-1)]切片操作实际上没有考虑到年份是否闰年
# 因此,如果是闰年且月份大于等于3,这里的计算就会出错
days = sum(list[0:(y-1)]) + z
# 判断年份是否是闰年
# 这里使用x / 4 == 0作为判断依据是错误的
# 因为这样会判断任何能被4整除的年份都是闰年
# 正确的闰年判断方法是:(x % 4 == 0 and x % 100 != 0) or (x % 400 == 0)
if x / 4 == 0:
# 如果是闰年,将天数加1(因为闰年2月有29天)
# 但这里逻辑有误,应该判断是否是闰年且月份大于2
print("这一天是这一年的第%d天。" % (days + 1))
else:
# 如果不是闰年,直接输出天数
print("这一天是这一年的第%d天。" % (days))
print("请输入日期:")
x = int(input("年:"))
y = int(input("月:"))
z = int(input("日:"))
list = [31,28,31,30,31,30,31,31,30,31,30,31]
days = sum(list[0:(y-1)])+ z
if x / 4 ==0:
print("这一天是这一年的第%d天。"%(days+1))
else:
print("这一天是这一年的第%d天。"%(days))
5.斐波那契数列
斐波那契数列(Fibnonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34......。
fib=[0,1]
i=int(input("您希望输出第几个斐波那契数?"))
if i >2:
for j in range(0,i):
fib.append(fib[-1]+fib[-2])
else:pass
print("第%d个斐波那契数是%d."%(i,fib[i-1]))
# 初始化一个包含斐波那契数列前两项的列表
fib = [0, 1]
# 获取用户输入,并转换为整数,询问用户希望输出第几个斐波那契数
i = int(input("您希望输出第几个斐波那契数?"))
# 判断用户输入的数字是否大于2
if i > 2:
# 如果大于2,则通过循环计算斐波那契数列中剩余的数字
for j in range(0, i):
# 在列表末尾添加新的斐波那契数(最后两项之和)
fib.append(fib[-1] + fib[-2])
else:
# 如果用户输入的数字不大于2,则不需要执行任何操作(这里使用了pass语句,它是一个占位符,表示什么都不做)
pass
# 输出第i个斐波那契数
# 注意:列表的索引是从0开始的,所以第i个斐波那契数实际上是列表中的第i-1个元素
print("第%d个斐波那契数是%d." % (i, fib[i-1]))
您希望输出第几个斐波那契数?10
第10个斐波那契数是34.