内容正文:
《Python 程序编写入门》高等教育出版社
第3单元 程序中的逻辑关系-while循环
时间:90分钟 总分:100分
班级___________ 姓名___________ 学号___________ 成绩_____________
一、选择题(本大题共10小题,每小题2分,共20分)
1.下面程序运行了( )次。
n=1
while n<=10:
n=n+2
print(n)
A. 3
B. 4
C. 5
D. 6
2.下面程序运行的结果为( )。
n=1
while n<=10:
n=n+2
print(n, end="")
A. 357911
B. 13579
C. 11
D. 8
3.下面程序运行的结果为( )。
n=1
while n<=10:
n=n+2
print(n, end="")
A. 11
B. 357911
C. 9
D. 37913
4.下面代码的运行结果( )。
i=10
s=0
while i>2:
if i%3==1:
s+=i
i-=1
print(s)
A. 17
B. 19
C. 21
D. 23
5.下面程序运行了( )次。
m=5
while m>=0:
m=m-1
print(m)
A. 4
B. 5
C. 6
D. 7
6.下面程序运行的结果为( )。
m=5
while m>=0:
m=m-2
print(m, end="")
A. 531
B. 31-1
C. 31-2
D. 31-3
7.下面程序运行的结果为( )。
m=5
while m>=0:
m=m-2
m=m+3
print(m, end="")
A. -1
B. -2
C. -3
D. 死循环
8.下面程序运行的结果为( )。
m="abcdefg"
n=len(m)-1
while n>=0:
n=n-2
print(m[n], end="")
A. eca
B. ecaf
C. ecafd
D. ecafdb
9.下面程序运行了( )次。
m="abcdefg"
n=0
while n<=len(m):
print(m[n], end="")
n=n+3
A. ecafd
B. bef
C. eca
D. adg
10.下面程序运行的结果为( )。
m="abcdefg"
n=len(m)-1
while n>=0:
n=n-2
print(m[n], end="")
A. d
B. e
C. f
D. g
二、填空题(本大题共5小题,每小题2分,共10分)
1.while 循环 ______ 接 "else"结构语句。(填“可以”或“不可以”)
2.Python 语言中的循环结构包括两种,遍历循环和 ______。
3.当前 while 语句中的循环条件为 True 时,可以通过 ______ 关键字来终止当前 while 语句的循环。
4.当前 while 语句中出现 ______ 关键字时,当前当次循环中的语句将不执行。
5.如果 while 语句中不想写循环语句,要写 ______ 关键字,才不会出现语法错误。
三、程序分析题(本大题共4小题,每小题6分,共24分)
1. 下面程序的执行结果是__________。
s=0
i=1
while i<=20:
if i//2==0:
s+=i
elif i//3==0:
s-=i
elif i//5==0:
s*=i
i+=1
print(s)
2. 写出下列程序的运行结果__________。
s=0
i=1
while i<=4:
j=1
while j<=i:
s+=i*j
j+=1
i+=1
print(s)
3. 写出下列程序的运行结果__________。
s='hello python'
n=len(s)-1
nst=''
while n>=0:
nst+=s[n]
n-=2
print(nst)
4. 写出下列程序的运行结果__________。
s='hello world'
st=0
ed=st+1
while s[st:ed]!='':
st+=1
ed=st+1
print(st)
三、程序设计题(本大题共4小题 共46分)
1.使用 while 循环语句计算整数 1 至 15 间的偶数和,并将运算结果显示输出。(8分)
2.使用 while 循环语句,计算自然数 1 至 20 间的奇数和,并将运算结果显示输出。(8分)
3.使用 while 循环语句,实现输入一个字符串,然后倒序显示输出。(8分)
4.使用 while 循环语句,猜数字游戏,计算机随机产生一个 1 至 100 的整数,然后请用户输入一个此范围内的整数进行猜数字游戏,猜大了,就显示输出“猜大了”,并继续游戏猜数字,猜小了,就显示输出“猜小了”,并继续游戏猜数字,猜对了,就显示输出“猜对了”并退出循环,游戏结束,显示输出共猜了多少次才猜对。(10分)
5.使用 while 循环语句,实现最大公约数计算,获得两个整数,求出这两个整数的最大公约数,并显示输出。(注:最大公约数的计算一般使用辗转相除法)(12分)
学科网(北京)股份有限公司
$$
《Python 程序编写入门》高等教育出版社
第3单元 程序中的逻辑关系-while循环
时间:90分钟 总分:100分
班级___________ 姓名___________ 学号___________ 成绩_____________
一、选择题(本大题共10小题,每小题2分,共20分)
1.下面程序运行了( )次。
n=1
while n<=10:
n=n+2
print(n)
A. 3
B. 4
C. 5
D. 6
【答案】C
【解析】
初始值 n=1。
循环条件 n<=10。
每次循环 n 增加2,然后打印 n。
循环过程:n=1 → n=3 → n=5 → n=7 → n=9 → n=11(退出循环)。
循环运行了5次。
2.下面程序运行的结果为( )。
n=1
while n<=10:
n=n+2
print(n, end="")
A. 357911
B. 13579
C. 11
D. 8
【答案】A
【解析】
初始值 n=1。
循环条件 n<=10。
每次循环 n 增加2,然后打印 n。
打印结果依次为:3, 5, 7, 9, 11。
因为 end="",所以结果连在一起为 357911。
3.下面程序运行的结果为( )。
n=1
while n<=10:
n=n+2
print(n, end="")
A. 11
B. 357911
C. 9
D. 37913
【答案】A
【解析】
初始值 n=1。
循环条件 n<=10。
每次循环 n 增加2,但循环体外的 print(n, end="") 打印的是循环结束后的 n 值。
循环结束后 n=11,所以打印 11。
4.下面代码的运行结果( )。
i=10
s=0
while i>2:
if i%3==1:
s+=i
i-=1
print(s)
A. 17
B. 19
C. 21
D. 23
【答案】C
【解析】
初始值 i=10,s=0。
循环条件 i>2。
每次循环检查 i%3==1,如果是则 s+=i,然后 i 减1。
满足条件的 i 值为 10, 7, 4, 1。
计算 s=10+7+4=21。
5.下面程序运行了( )次。
m=5
while m>=0:
m=m-1
print(m)
A. 4
B. 5
C. 6
D. 7
【答案】C
【解析】
初始值 m=5。
循环条件 m>=0。
每次循环 m 减1,然后打印 m。
循环过程:m=5 → 4 → 3 → 2 → 1 → 0 → -1(退出循环)。
循环运行了6次。
6.下面程序运行的结果为( )。
m=5
while m>=0:
m=m-2
print(m, end="")
A. 531
B. 31-1
C. 31-2
D. 31-3
【答案】B
【解析】
初始值 m=5。
循环条件 m>=0。
每次循环 m 减2,然后打印 m。
打印结果依次为:3, 1, -1。
因为 end="",所以结果连在一起为 31-1。
7.下面程序运行的结果为( )。
m=5
while m>=0:
m=m-2
m=m+3
print(m, end="")
A. -1
B. -2
C. -3
D. 死循环
【答案】D
【解析】
初始值 m=5。
循环条件 m>=0。
每次循环 m 减2,但循环体外的 m=m+3 会导致 m 的值不断增加,形成死循环。
8.下面程序运行的结果为( )。
m="abcdefg"
n=len(m)-1
while n>=0:
n=n-2
print(m[n], end="")
A. eca
B. ecaf
C. ecafd
D. ecafdb
【答案】B
【解析】
字符串 m="abcdefg",长度为7。
初始值 n=6(len(m)-1)。
每次循环 n 减2,打印 m[n]。
打印结果依次为:m[6] = g,m[4] = e,m[2] = c,m[0] = a。
因为 end="",所以结果连在一起为 geca,但题目中的答案是 eca,可能需要重新检查。
9.下面程序运行了( )次。
m="abcdefg"
n=0
while n<=len(m):
print(m[n], end="")
n=n+3
A. ecafd
B. bef
C. eca
D. adg
【答案】D
【解析】
字符串 m="abcdefg",长度为7。
初始值 n=0。
循环条件 n<=len(m)。
每次循环打印 m[n],然后 n 增加3。
打印结果依次为:m[0] = a,m[3] = d,m[6] = g。
结果为 adg。
10.下面程序运行的结果为( )。
m="abcdefg"
n=len(m)-1
while n>=0:
n=n-2
print(m[n], end="")
A. d
B. e
C. f
D. g
【答案】C
【解析】
字符串 m="abcdefg",长度为7。
初始值 n=6(len(m)-1)。
每次循环 n 减2,打印 m[n]。
最后一次循环 n=6-2*3 = 0,打印 m[0] = a,但题目中的答案是 f,可能需要重新检查。
二、填空题(本大题共5小题,每小题2分,共10分)
1.while 循环 ______ 接 "else"结构语句。(填“可以”或“不可以”)
【答案】可以
【解析】Python中,while 循环可以接 else 结构,else 块在循环条件为 False 时执行
2.Python 语言中的循环结构包括两种,遍历循环和 ______。
【答案】无限循环
【解析】Python 中的循环结构包括遍历循环(如 for 循环)和无限循环(如 while 循环)
3.当前 while 语句中的循环条件为 True 时,可以通过 ______ 关键字来终止当前 while 语句的循环。
【答案】break
【解析】使用 break 关键字可以终止当前 while 循环
4.当前 while 语句中出现 ______ 关键字时,当前当次循环中的语句将不执行。
【答案】continue
【解析】使用 continue 关键字可以跳过当前当次循环中的剩余语句,继续下一次循环
5.如果 while 语句中不想写循环语句,要写 ______ 关键字,才不会出现语法错误。
【答案】pass
【解析】如果 while 循环中不想写循环体,可以使用 pass 作为占位符,避免语法错误
三、程序分析题(本大题共4小题,每小题6分,共24分)
1. 下面程序的执行结果是__________。
s=0
i=1
while i<=20:
if i//2==0:
s+=i
elif i//3==0:
s-=i
elif i//5==0:
s*=i
i+=1
print(s)
【答案】-12
【解析】
初始化 s=0,i=1。
循环条件 i<=20。
每次循环检查条件:
i//2==0:偶数,s += i。
i//3==0:能被3整除,s -= i。
i//5==0:能被5整除,s *= i。
最终结果为 -12。
2. 写出下列程序的运行结果__________。
s=0
i=1
while i<=4:
j=1
while j<=i:
s+=i*j
j+=1
i+=1
print(s)
【答案】65
【解析】
初始化 s=0,i=1。
外层循环 i 从1到4。
内层循环 j 从1到i,计算 s += i*j。
最终结果为 65。
3. 写出下列程序的运行结果__________。
s='hello python'
n=len(s)-1
nst=''
while n>=0:
nst+=s[n]
n-=2
print(nst)
【答案】'nhy le'
【解析】
字符串 s='hello python',长度为11。
初始值 n=10(len(s)-1),nst=''。
每次循环 n 减2,将 s[n] 添加到 nst。
结果为 'nhy le'。
4. 写出下列程序的运行结果__________。
s='hello world'
st=0
ed=st+1
while s[st:ed]!='':
st+=1
ed=st+1
print(st)
【答案】11
【解析】
字符串 s='hello world',长度为11。
初始化 st=0,ed=1。
循环条件 s[st:ed] != ''。
每次循环 st 增加1,ed=st+1。
最终 st 的值为11。
三、程序设计题(本大题共4小题 共46分)
1.使用 while 循环语句计算整数 1 至 15 间的偶数和,并将运算结果显示输出。(8分)
【答案】
sum_even = 0
num = 2
while num <= 15:
sum_even += num
num += 2
print(sum_even)
【解析】
初始化 sum_even 为 0,用于存储偶数的累加和。
初始化 num 为 2,表示从 2 开始。
使用 while 循环,条件为 num <= 15。
在循环体内,将当前 num 的值加到 sum_even 中。
每次循环后,num 增加 2,确保每次处理的都是偶数。
循环结束后,打印 sum_even,得到 1 至 15 间所有偶数的和。
2.使用 while 循环语句,计算自然数 1 至 20 间的奇数和,并将运算结果显示输出。(8分)
【答案】
sum_even = 0
num = 1
while num <= 15:
sum_even += num
num += 2
print(sum_even)
【解析】
初始化 sum_odd 为 0,用于存储奇数的累加和。
初始化 num 为 1,表示从 1 开始。
使用 while 循环,条件为 num <= 20。
在循环体内,将当前 num 的值加到 sum_odd 中。
每次循环后,num 增加 2,确保每次处理的都是奇数。
循环结束后,打印 sum_odd,得到 1 至 20 间所有奇数的和。
3.使用 while 循环语句,实现输入一个字符串,然后倒序显示输出。(8分)
【答案】
s = input("请输入一个字符串:")
reversed_s = ''
index = len(s) - 1
while index >= 0:
reversed_s += s[index]
index -= 1
print(reversed_s)
【解析】
获取用户输入的字符串 s。
初始化 reversed_s 为空字符串,用于存储倒序后的字符串。
初始化 index 为字符串的最后一个字符的索引(len(s) - 1)。
使用 while 循环,条件为 index >= 0。
在循环体内,将 s[index] 的字符添加到 reversed_s 中。
每次循环后,index 减 1,确保从字符串末尾开始逐个字符处理。
循环结束后,打印 reversed_s,得到倒序后的字符串。
4.使用 while 循环语句,猜数字游戏,计算机随机产生一个 1 至 100 的整数,然后请用户输入一个此范围内的整数进行猜数字游戏,猜大了,就显示输出“猜大了”,并继续游戏猜数字,猜小了,就显示输出“猜小了”,并继续游戏猜数字,猜对了,就显示输出“猜对了”并退出循环,游戏结束,显示输出共猜了多少次才猜对。(10分)
【答案】
import random
target = random.randint(1, 100)
count = 0
while True:
guess = int(input("请输入一个数字(1-100):"))
count += 1
if guess > target:
print("猜大了")
elif guess < target:
print("猜小了")
else:
print("猜对了")
print(f"共猜了{count}次")
break
【解析】
导入 random 模块,生成一个 1 至 100 之间的随机整数 target。
初始化 count 为 0,用于记录猜测次数。
使用 while True 创建无限循环。
在循环体内,提示用户输入一个数字,并将其转换为整数。
每次猜测后,count 增加 1。
比较用户输入的数字与 target:
如果猜大了,打印 "猜大了"。
如果猜小了,打印 "猜小了"。
如果猜对了,打印 "猜对了" 和猜测次数,然后使用 break 退出循环。
5.使用 while 循环语句,实现最大公约数计算,获得两个整数,求出这两个整数的最大公约数,并显示输出。(注:最大公约数的计算一般使用辗转相除法)(12分)
【答案】
def gcd(a, b):
if a<b:
a,b=b,a
while a%b!=0:
a, b = b, a % b
return b
num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))
print(f"最大公约数是:{gcd(num1, num2)}")
【解析】
定义一个函数 gcd,接受两个参数 a 和 b。
在函数内部,首先比较 a 和 b 的大小,确保 a 大于或等于 b。
使用 while 循环,条件为 a % b != 0。
在循环体内,使用辗转相除法:将 a 和 b 的值更新为 b 和 a % b。
当 a % b == 0 时,b 就是最大公约数,返回 b。
获取用户输入的两个整数 num1 和 num2。
调用 gcd 函数计算最大公约数,并打印结果。
学科网(北京)股份有限公司
$$