本关任务:编写一个能计算斐波那契数列中第x个数的小程序。
为了完成本关任务,你需要掌握:1.什么是斐波那契数列,2.for循环
什么是斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列、 因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。 有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,每个月的兔子数形成的数为斐波那契额数列 在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)
for循环
在python中,对于for循环,可以设置遍历结构为range函数 for i in range(初值,终值): <语句块>
i从初值取值到终值-1,每次执行一次循环体
根据提示,在右侧编辑器补充代码,输入x,输出第x个斐波那契数列。 注意:斐波那契数列的第一项和第二项为1
平台会对你编写的代码进行测试:
测试输入:6 预期输出: 8
测试输入:1; 预期输出: 1 测试输入:10; 预期输出: 55
x=eval(input(""))
#代码开始
# def fib(x):
# if x==1 or x==2:
# return 1
# return fib(x-1)+fib(x-2)
# print (fib(x))
m,n=1,1
for i in range(1,x+1):
if i==1 or i==2:
z=1
else:
z=m+n
m=n
n=z
print(z)
#代码结束
第2关:统计一段英文语句中的单词数和句子数
本关任务:编写一个小程序,输入一段英文短语,统计其中的单词数目和句子数目。
为了完成本关任务,你需要掌握:1.如何判断英文语句中的单词数和句子数,2.如何遍历字符串。
获取判断英文语句中的单词数目和句子数目
要统计词语的数量,则统计当前字符是大写或小写英文字母,而前一个字符是空格或标点符号(句号(.)惊叹号(!)问号(?)逗号(,)分号(;)双引号(""))等的数目。 例如,输入英文短语如下,统计结果为57个单词和3个句子。 提示:对字符串的每个字符ch循环,若ch是句号(.)惊叹号(!)问号(?)时,则表示句子数的变量加一。若ch是大小写英文字母,且前一个字符是指定标点时,表示词语数的变量加一。前一个字符可以用一个变量保存,只要在循环语句的最后将ch赋值给该变量即可。提示:对于第一个字符,可以设置其前一个字符为空格。
遍历字符串
for c in s: <语句块>
从字符串s中逐一提取字符,放在字符变量c中, 对于所提取的每个字符执行一次循环体
根据提示,在右侧编辑器补充代码,统计输入的英文中的单词数目和句子数目。
平台会对你编写的代码进行测试:
测试输入:The government of Beijing has spent a large amount of money on building these bridges. For their own safety, pedestrians should be encouraged to use them instead of risking their lives by dashing across the road. Old people , however , may find it a little difficult climbing up and down the steps, but it is still much safer than walking across the road with all the danger of moving traffic. 预期输出: 单词69句子3
测试输入:One morning a fox saw a cock.He thought,"This is my breakfast." He came up to the cock and said,"I know you can sing very well.Can you sing for me?" 预期输出: 单词33句子4
提示: 可以用一个字符变量保存前一个字符(当前字符前的字符)
x=input()
#代码开始
cy=0
jz=0
ch=" "
for c in x:
if ch in ".!?" :
jz=jz+1
ch=c
for c in x:
if ch in ' ,.!?";' and c.isalpha():
cy=cy+1
ch=c
#代码结束
print("单词{}句子{}".format(cy,jz))
本关任务:输入用户名和密码,根据密码文件中所记录的用户名和密码信息,判断登录信息是否正确.密码文件的信息如下所示,每行显示逗号分隔的姓名和密码 甲乙,11111111 陈二,76895409 张三,12345678 李四,87654321 王五,88888888 赵六,99999999 欧阳小七,42110198
为了完成本关任务,你需要掌握:1.如何打开文件,2.如何遍历文件,3.如何截取字符串。
打开文件
打开一个文件,并创建一个file类对象 文件名在当前文件夹下,直接输入文字的名字 当以读的方式打开文件时,设置打开模式为”r”
遍历文件
遍历结构是文件 遍历文件fi的每一行 for line in fi: <语句块>
line是每行读出的字符串
注意:line字符串的结尾为换行符'\n'
截取字符串
str.find(指定字符)返回指定字符在字符串str的索引pos str[:pos]是该字符串中该字符以前的子串 str[pos+1:]是该字符串中该字符以后的子串
根据提示,在右侧编辑器补充代码,实现检测用户名和密码的功能。 注意:str.strip('\n')去掉字符串首尾的换行符
平台会对你编写的代码进行测试:
测试输入: 用户名张三 密码129876543
预期输出: 用户名或密码错误
测试输入: 用户名甲乙 密码11111111
预期输出: 密码正确
测试输入: 用户名刘好 密码129876543
预期输出: 用户名或密码错误
f1=open("sy5/密码.txt","r",encoding="utf-8")
x=input("用户名")
y=input("密码")
b=1
#代码开始
for line in f1:
line=line.strip('\n')
mm=line.find(',')
pw=line[mm+1:]
a=line[0:mm]
if pw==y and a==x:
b=0
if b==1:
print("用户名或密码错误")
else:
print("密码正确")
#代码结束
本关任务: 编写程序,根据近似公式 e≈1+1/(1!)+1/(2!)+1/(3!)+… +1/(n!) 计算 e 的近似值,要求直至最后一项的值小于 1e-7 次方为止
为了完成本关任务,你需要掌握:while循环
while循环
while <循环条件> : <语句块> 当判断条件为True时,循环体重复执行语句块中语句;当条件为False时,循环终止,执行与while同级别缩进的后续语句
根据提示,在右侧编辑器补充代码,输出自然常数e的值。 根据近似公式
计算 e 的近似值,要求直至最后一项的值小于 1e-7 为止.
from math import*
n=1
s=1
#代码开始
while 10**-7<=1/factorial(n):
s=s+1/factorial(n)
n=n+1
#代码结束
print("e值为{:.8}".format(s))