python复习4

目录

1.剪刀石头布游戏

2.快乐数 

 3.猜年龄(1)

 4.猜年龄(2)

 5.大衍数列


1.剪刀石头布游戏

游戏开始,初始状态下用户和电脑都有100分,赢一局+10,输一局-10分。当用户分数为0时,游戏结束,提示“游戏结束,比赛输了”;当用户为200分时,游戏结束,提示“游戏结束,比赛赢了”,每轮比赛都输出当前的分数

#1代表剪刀,2代表石头,3代表布
import random as rd
print("="*60)
print(''*20,'剪刀石头布游戏')
print("1代表剪刀,2代表石头,3代表布")
game_info={1:'剪刀',2:'石头',3:'布'}
score=100
while True:
    robots_choice=rd.randint(1,3)
    user_choice=input("请出拳")
    if user_choice not in '123':
        print("出拳错误,请重新出拳")
        continue
    user_choice=int(user_choice)
    print("="*60)
    print(f"电脑出{game_info[robots_choice]}")
    print(f'你出{game_info[user_choice]}')
    print('='*60)
    if user_choice==1 and robots_choice==3 or user_choice==2 and robots_choice==1 or user_choice==3 and robots_choice==2:
        score+=10
        print(f'你赢得本轮游戏,当前分数为{score}')
    elif user_choice==robots_choice:
        print(f'本轮游戏平局,当前分数为{score}')
    else:
        score-=10
        print(f'你输了本轮游戏,当前分数为{score}')
    if score>=200:
        print('游戏结束,你赢得比赛')
    elif score<=0:
        print("游戏结束,你输了")
        break

2.快乐数 

在给定的数字下,该数字所有数位的平方和,得到的新数再次求所有数位的平方和,如此重复进行,最终结果必定为一

def sum_square(n):
    sum_num=0
    for i in str(n):
        sum_num+=int(i)**2
    return sum_num
list1=[]
n=int(input("请输入数字:"))
while sum_square(n) not in list1:
    n=sum_square(n)
    list1.append(n)
if n==1:
    print("是快乐数")
else :
    print("不是快乐数")

 3.猜年龄(1)

小明带两个妹妹参加元宵灯会,别人问她们多大了,她们说:“我们两的年龄之积是年龄之和的6倍”。小明补充说:“她们两个不是双胞胎,年龄差不超过八岁”。请写出小明较小妹妹的年龄

for i in range(1,100):
    for j in range(1,i):
        if i * j==(i+j)*6 and i-j<8:
            print(i,j)

 4.猜年龄(2)

set()函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等

美国数学家维纳11岁就上了大学。他曾应邀来清华大学讲学,一次,他参加某个重要会议,有人问他年龄,他回答说:“我年龄的立方是个四位数。我年龄的四次方是个六位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”请推算,他当时多大

for i in range(1,100):
    q1=str(i**3)
    q2=str(i**4)
    if len(q1)==4 and len(q2)==6:
        if len(set(q1+q2))==10:
            print(i)
            print(q1+q2)

 5.大衍数列

中国古代文献中,曾记载“大衍数列”,主要用于解释中国传统文化中的太极衍生原理,他的前几项是:0,2,4,8,12,18,24,32,40,50...

规律为:偶数项=序号平方再除以2;奇数项=序号平方减1再除以2

要求:打印大衍数列的前100项

for i in range(1,101):
    if i%2==1:
        print(int((i**2-1)/2))
    else:
        print(int(i**2/2))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值