题目:编写一个函数paint(n),根据输入参数n(行数)不同,输出下面图形(n=4),并测试。
?????? *
?? ???***
? ???*****
??? *******
个人一些理解:这东西在我学C,C++,数据结构的时候都能遇到,老熟人了,这次用python来实现了,这个没啥太多难点主要是注意这玩意居中,也就是要用到一个format操作方法{0:^100},这里用100主要是保险起见,100个绝对够用的了。下面就是个人写的一些代码。
代码:
def P(n):
for i in range(1,n+1):
a=2*i-1
print('{0:^100}'.format('*'*a))
print(P(4))
题目:编程实现豆堆游戏。堆里有16颗豆子,有两个玩家(假设一个玩家是电脑)。每个玩家都可以从堆中的16颗豆子中取出1颗,2颗或者3颗豆子。每个玩家在每回合中必须从堆中取出一定数目的豆子。玩家轮流取出豆子,取到最后一颗豆子的玩家是输家。
提示: 帮电脑玩家设计一个算法,实现取豆子的函数;再写一个人取豆子的函数;在主程序中进行输流调用,谁最后拿到1粒豆子谁就输。
个人理解:这个看着多但是仔细想想也不是什么难的题,主要是要细心抓住一些关键点,比如一次只能取1或2或3颗豆子,对于真人这里个人首先想到用if来限制,对于电脑个人首先想到的是用randint来限制,因为电脑这玩意是死的人是活的可以灵活变通;然后就是只有16颗,并且取到最后一颗的就输了,所以最后可能去完是负的豆子数这个也要考虑在内的,因为这个实际上是输了的。然后就是循环操作了不是很难,下面展示个人写的一些代码。
代码:
import random
#真人玩家取豆子
def people(n):
#用while循环来实现真人玩家取豆子
while 1:
x_people=int(input("真人玩家取出豆子数: "))
#用if来限定一次只能取1或2或3颗豆子
if (1<=x_people<=3):
break
else:
print("每次取出的豆子数应该属于(1,2,3),请重新输入!")
continue
print("豆子剩余数量:",n-x_people)
return (n - x_people)
#电脑玩家取豆子
def computer(n):
#这里用randint让电脑玩家只能取1或2或3颗豆子
y_computer=random.randint(1,3)
print("电脑玩家取出豆子数:",y_computer)
print("豆子剩余数量:",n-y_computer)
return (n-y_computer)
def main():
z=16
print("豆子的总数为:",z)
while 1:
z=people(z)
if z<=0:
print("电脑玩家胜利!")
break
z=computer(z)
if z<=0:
print("真人玩家胜利赢!")
break
main()
|