练习
- 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
# 1.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
from functools import reduce
def compute():
result = 0
lst = []
fenzi = 2
fenmu = 1
lst.append(fenzi / fenmu)
for i in range(19):
fenmu,fenzi = fenzi,fenmu+fenzi
# tmp = fenzi
# fenzi = tmp + fenmu
# fenmu = tmp
lst.append(fenzi / fenmu)
# for k in lst:
# result += k
result = reduce(lambda x,y: x+y,lst)
return result
print(compute())
- 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
# 第一种方法
num = input('请输入一个数字:')
num = int(num)
lst = []
while num > 0:
gewei = num % 10
lst.append(gewei)
num = num // 10
print(len(lst))
print(lst)
num = 56789
lst = []
while num > 0:
gewei = num % 10
lst.append(str(gewei))
num = num // 10
print(len(lst))
print(lst)
strnum = '@'.join(lst)
print(strnum)
email = 'zhangsan@qq.com'
infolst = email.split('@')
print(infolst)
print(infolst[0])
print(infolst[1])
email2 = '@'.join(infolst)
print(email)
# 第二种方法
num = input('请输入一个数字:')
print(len(num))
num_reverse = num[::-1]
print(num_reverse)
- 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
num = int(input('请输入人数:'))
lst = list(range(1,num+1))
lst_len = len(lst)
while lst_len > 2:
#删除掉第三个元素
lst.pop(2)
#得到前面的子列表
before = lst[:2]
#得到后面的子列表
lst = lst[2:]
#合并后前两个列表
lst.extend(before)
lst_len = len(lst)
print(lst[-1])
- 题:编写一个程序,根据控制台输入的事务日志计算银行帐户的净金额。 事务日志格式如下所示:
D 100
W 200
D表示存款,而W表示提款。
假设为程序提供了以下输入:
D 300
D 300
W 200
D 100
然后,输出应该是:
500
a = ''
if a:
print('ddd')
# isMan = True
# tmp = not isMan
# print(tmp)
money = 0
while True:
cmd = input('请输入命令:')
if not cmd:
break
# cmd = 'W 300'
cmdlst = cmd.split(' ')
if cmdlst[0] == 'D':
if len(cmdlst) > 1:
if cmdlst[1].isdigit():
money += int(cmdlst[1])
elif cmdlst[0] == 'W':
if len(cmdlst) > 1:
if cmdlst[1].isdigit():
money -= int(cmdlst[1])
else:
pass
print(money)
print('end')
- 机器人从原点(0,0)开始在平面中移动。 机器人可以通过给定的步骤向上,向下,向左和向右移动。 机器人运动的痕迹如下所示:
UP 5
DOWN 3
LETF 3
RIGHT 2
方向之后的数字是步骤。 请编写一个程序来计算一系列运动和原点之后距当前位置的距离。如果距离是浮点数,则只打印最接近的整数。
例:如果给出以下元组作为程序的输入:
UP 5
DOWN 3
LETF 3
RIGHT 2
然后,程序的输出应该是:2
import math
init_pos = [0, 0]
while True:
cmd = input('请输入命令:')
if not cmd:
break
cmdlst = cmd.split(' ')
if cmdlst[0] == 'U':
init_pos[1] += int(cmdlst[1])
elif cmdlst[0] == 'D':
init_pos[1] -= int(cmdlst[1])
elif cmdlst[0] == 'L':
init_pos[0] -= int(cmdlst[1])
elif cmdlst[0] == 'R':
init_pos[0] += int(cmdlst[1])
else:
pass
distance = int(round(math.sqrt(init_pos[0]*init_pos[0] + init_pos[1]*init_pos[1])))
print(distance)
- 龟兔赛跑
(模拟龟兔赛跑)本练习中要模拟龟兔赛跑的寓言故事。用随机数产生器建立模拟龟兔赛跑的程序。 对手从70个方格的第1格开始起跑,每格表示跑道上的一个可能位置,终点线在第70格处。 第一个到达终点的选手奖励一个新鲜萝卜和莴苣。兔子要在山坡上睡一觉,因此可能失去冠军。 有一个每秒钟滴答一次的钟,程序应按下列规则调整动物的位置:
用变量跟踪动物的位置(即位置号1到70)。每个动物从位置1开始,如果动物跌到第1格以外,则移回第1格。 产生随机整数1≤i≤10),以得到上表中的百分比。对于乌龟,1≤i≤5时快走,6≤i≤7时跌跤,8≤i≤10时慢走,兔子也用相似的方法。 起跑时,打印: BANG !!!!! AND THEY' RE OFF !!!!! 时钟每次滴答一下(即每个重复循环),打印第70格位置的一条线,显示乌龟的位置T和兔子的位置H。 如果两者占用一格,则乌龟会咬兔子,程序从该位置开始打印 OUCH!!!。除T、H和OUCH!!!以外的其他打印位置都是空的。 打印每一行之后,测试某个动物是否超过了第70格,如果是,则打印获胜者,停止模拟。 如果乌龟赢,则打印TORTOISE WINS!!!YAY!!!。如果兔子赢,则打印Hare wins.Yush。 如果两个动物同时赢,则可以同情弱者,让乌龟赢,或者打印It's a tie。如果两者都没有赢,则再次循环,模拟下一个时钟滴答。 准备运行程序时,让一组拉拉队看比赛,你会发现观众有多么投入。
import time
from random import randint
print('begin')
hPos = 0
tPos = 0
while True:
paodao = '_' * 70
num = randint(1,10)
if 1<=num<=5:
tPos+=3
elif 6<=num<=7:
tPos-=6
else:
tPos+=1
if num<=2:
hPos=hPos
elif 3<=num<=4:
hPos+=9
elif num==5:
hPos-=12
elif 6<=num<=8:
hPos+=1
else:
hPos-=2
if tPos < 0:
tPos = 0
if hPos < 0:
hPos = 0
if tPos > 70 or hPos > 70:
break
if tPos == hPos:
# yao
paodao = paodao[:tPos] + '咬' + paodao[tPos+1:]
else:
paodao = paodao[:tPos] + '龟' + paodao[tPos + 1:]
paodao = paodao[:hPos] + '兔' + paodao[hPos + 1:]
print(paodao)
time.sleep(0.3)
if tPos > 70:
print('龟赢')
else:
print('兔赢')
- 猜单词游戏
需求
给定单词数组(不少于10个),程序随机选择其中的一个,并显示单词字符长度个横线(-),用户有5次猜测机会,用户每次猜一个字母,如果正确,则将在相应的位置上显示出来;如错误则猜测机会减一,重复该过程,直至单词的全部字母全部猜出或者猜测次数用完,最后宣布用户胜利或失败。
实例
例如随机选出的单词是apple,程序先打印- - - - - 用户输入p,程序打印 -pp-- 用户输入e,程序打印 -pp-e 用户输入t,程序打印 -pp-e 您还有4次机会 用户输入a,程序打印 app-e 用户输入l,程序打印 apple 恭喜您,取得胜利。
import random
words = ['program','banana','tiger','policeman','interface']
#程序出单词(随机)
idx = random.randint(0,len(words)-1)
word = words[1]
print(word)
toguess = '-' * len(word)
#显示这个单词给用户(用-标示),-的个数要等于单词的长度
# print('-' * len(word))
wordLst = list(toguess)
print(''.join(wordLst))
guessTime = 5
#开始猜单词
while True:
if '-' not in wordLst:
break
if guessTime <= 0:
break
#让用户输入一个要猜的字符
c = input('请输入要猜的字符:')
if c in word:
for i,w in enumerate(word):
if w == c:
wordLst[i] = c
else:
guessTime -= 1
print(f'你还剩下{guessTime}次机会')
print(''.join(wordLst))
if guessTime > 0:
print('you win')
else:
print('you lose')
网友评论