Python之习题2

练习题

1.有多少个三位数字能被17整除?编写程序,将这些数字显示出来。

for i in range(100,1000):
    if i%17==0:
        print(i,end="\t")

在这里插入图片描述

2.连续整数之和:
(a)写一个程序,提示输入整数X,然后计算从1开始,连续X个整数之和。也就是说,如果X=5、要计算1+2+3+4+5=15。

n=int(input("输入一个整数:"))
sum=0
for i in range(1,n+1):
    sum+=i
print(sum)

(b)改写程序,使用循环嵌套的方式计算连续整数和。例如,如果输入5,输出连续5个数字的和:
1 =1
1+2 =3
1+2+3 =6
1+2+3+4 =10
1+2+3+4+5 =15

n=int(input("输入一个整数:"))
for i in range(1,n+1):
    sum=0
    for j in range(1,i):
        sum+=j
    print(sum)

(e)再次修改程序,如果得到的和能被操作数的数目(X)所整除,显示和的值。例如,和1+2+3+4+5-15,有5个操作数及一个和15,和15能被5整除,因此和显示出来。(你能找出其中的模式吗?)

n=int(input("输入一个整数:"))
for i in range(1,n+1):
    sum=0
    for j in range(1,i+1):
        sum+=j
    if sum%i==0:
        print(sum)

3、在这个练习中,将纳特转换为锡可,锡可转换为加仑(哈利波特小说中出现的货币)。进行计算,显示非零值。也就是说,如果没有足够的纳特能转换到锡可,那么“0锡可”不应显示出来。(1加仑=17锡可,1锡可=29纳特)

nate=int(input("输入纳特数:"))
if nate>0:
    xike=nate/29
    jialun=xike/17
    print(nate,"纳特是",xike,"锡可,是",jialun,"加仑")

4、(完全数)。这一章中有一个程序检查数字是否为完全数。如果想检查大量数字(大范围内的数a字)是否是完全数,那么所给出的程序并不是最好的。该如何改进?例如,只输出完全数,但同时对丰沛数和不足数进行计数?是否需要检查2~theNum-1的每一个数字?

5.要求计算BMI。现在添加程序功能,显示BMI对应的CDC标准体重状况类别:

BMI体重状况
低于 18.5偏轻
18.5 -24.9正常
25.0-29.9超重
30.0及以上过胖
height = float(input("输入身高,米"))  
weight = float(input("输入体重,千克"))  
bmi = weight / (height ** 2) 
if bmi<18.5:
	print("体重偏轻")
elif 18.5<=bmi<=24.9:
	print("体重正常")
elif 25.0<=bmi<=29.9:
	print("体重超重")
else:
	print("体重过胖")

6.写一个程序,提示输入一个整数,并显示此整数。如果输人的不是整数,程序将一直提示要求输入整数。下面是会话示例:
输入一个整数:abc
错误 :再试一次,输入一个整数:4a
错误 :再试一次,输入一个整数:2.5
错误 :再试一次,输入一个整数:123
这个整数是:123
提示:isdigit方法会有用。

a=input("输入一个整数")
while not a.isdigit():
    a=input("错误:再试一次,输入一个整数:")
else:
    print("这个整数是:",a)
    

7、编写一个程序,生成下面的算术例子。提示:
1)分治:哪些较为简单的问题需要解决?
2)考虑使用字符串来构建数字,然后再转换。
3)range 迭代器可能会有所帮助。
在这里插入图片描述
【分析】
第一个算术:
循环9次,第一个数每次末尾加多一个数。将数字转换为字符,然后连接字符串,再转为数字,例如str(1)+str(2)=“12”,再int(“12”)。
第二个数字都是8,第三个数字是依次加1

a=""
for i in range(1,10):
    a=a+str(i)
    b=8
    print(int(a),"*",b,"+",i,"=",int(a)*b+i)

其他的算是以此类推。

8.写一个程序,检査数N是否为素数。简单的方法是检查2~N之间所有的数字。但实际上有一些数不需要检查。例如,大于根号N的数字就不需要进行检查。写一个程序,检查素数,注意避免那些不必要的检查。

import math  
  
N = int(input("输入一个整数:"))
for i in range(2,int(math.sqrt(N)+1)):
    if N%i==0:
        print("不是素数")
        break
else:
    print("是素数")

12.写一个for循环,当输入“alphabetical”时,输出“pbil”
【分析】
结果分别是第3、6、9、12个字母。用for循环,从1循环到字符串长度数时,循环变量是3的倍数的就放到一起。

s=input("输入一个字符串")
r=""
n=1
for i in s:
    if n%3==0:
        r+=i
    n+=1
print(r)

13.写一个简短的程序,完成以下功能:

  • 提示用户输入数字。
  • 输出这个数是否为完全数。
  • 如果不是1个完全数,提示用户输入下一个数。
flag=0 # 作为标志,是完全数就改为1
while flag==0:
    sum=0
    n=int(input("输入一个整数"))
    for i in range(1,n):
        if n%i==0:
            sum+=i
    if sum==n:
            print("这是完全数")
            flag=1
    else:
            print("这不是完全数")

14.解释“is”和“ = = ",之间的差异。举一个例子(与本章中使用的不同),对“is”返回假,对“ = = ”返回真。
【参考答案】
“= =” 是一个比较运算符,用来比较两个值是否相等
“is” 是用来检查两个变量是否指向存储在内存中的同一对象
a = 7
b=7
那么a= =7,结果就是True
但a is b的结果就是Flase.
因为虽然 a 和 b 有相同的值,但是它们是两个不同的变量,它们分别指向内存中不同的对象。

15、这是使用while 循环的1个例子。其中有1个错误,你能找到 while 循环中的错误吗?仔细思考这个whie循环,找出是什么地方出错。参考本章中的流程图,应该会有所帮助。使用Python检查你的想法是否正确!
s= “that car was really fast”
i=1
while i>0:
for c in s :
if c ==“t”:
print (“found a it’in sentence”)
else :
print (“maybe the next character?”)
【参考答案】
在循环中没有对i的值进行更改,这个循环永不停止

16.如果 while循环是由“while True:”控制,它会永远循环下去,如何控制循环,使得它会停止?能给出一段简单的Python代码吗?
【参考答案】
可以使用break跳出循环
n=5
a=1
while True:
if a==n:
break
a+=1

17.编写程序,提示输入大于2的正数(检查是否符合这种条件),然后反复求该数字的平方根,直到平方根小于2。显示每次得到的平方根和已经完成的操作次数。例如:
输入大于2的正数:20
1:4.472
2:2.115
3:1.454
此外,请查阅字符串格式化(见4.41节)的内容,输出时采用3位小数的格式。
【参考答案】

import math  
count = 0 
while True:  
    number = input("输入大于2的正数: ")  
    if int(number) > 2 and number.isdigit():  
        while int(number) >= 2:  
            count += 1  
            number = math.sqrt(int(number))  
            print(f"{count}:{number:.3f}")

19.要了解一个程序试图完成什么工作,按照控制语句分析是必不可少的。在下面的例子中,当x=4时会发生什么情况?
while True:
for x in range (6):
Y = 2*x+1
print y
if y >9:
break
(a)程序跳出 while 循环,停止运行。
(b)程序跳出for循环,但while循环控制条件仍然为真,进入无限循环。
©程序不会中断,只是继续for循环。
【参考答案】
x=4时,Y=9,跳出循环,停止运行,选(a)

20.在下表空白处填上Tre或者False

pq(not p)or q(p and q) or q(p or q) and p(p or q)and(p and q)
TrueTrueTrueTrueTrueTrue
TrueFlaseFlaseFlaseTrueFlase
FlaseTrueTrueTrueFlaseFlase
FlaseFlaseTrueFlaseFlaseFlase

21.对于Python函数range(a,b),判定下面的陈述为 True 或False.

  • 值“a”在范围内。
  • 值“b”在范围内。
    【参考答案】
    range的范围包括了起始值,不包括终止值。
    第一个是True,第二个Flase

22.什么是迭代器?举两个迭代器的例子。
【参考答案】
迭代器是一个在Python中用于遍历序列(比如列表、元组、字典、集合、字符串)或集合对象(比如函数返回的对象、文件对象等)中元素的编程工具。它允许你按顺序逐个访问集合中的所有项目,而不必一次性将所有元素加载到内存中。
示例:
列表(List)的迭代器:在Python中,你可以使用iter()函数来创建列表的迭代器。例如:my_list = [1, 2, 3, 4, 5],然后my_iter = iter(my_list)。
字典(Dictionary)的迭代器:同样,你可以迭代字典中的键、值或项。例如,my_dict = {‘a’: 1, ‘b’: 2},使用iter(my_dict)、iter(my_dict.keys())或iter(my_dict.values())。

23、用自己的语言,描述循环中的continue和break语。
【参考答案】
continue英文单词是继续的意思,在循环中,能结束本次循环,继续下一轮循环。
break 是打破的意思。在循环中,能跳出循环结构。

25、寻找这样的两位数,使得将它进行平方后,将产生1个三位数字,而这个3位数字最右边的两个数字与原来的2位数字相同。也就是说,对于形如AB的每一个数字,对于CAB*AB=CAB成立。

# 遍历所有两位数  
for x in range(10, 100):  
    # 计算平方  
    square = x ** 2  
    # 检查平方是否为三位数  
    if 100 <= square < 1000:  
        # 检查平方的最后两位是否等于 x  
        if square % 100 == x:  
            print(f"找到的两位数: {x}, 其平方: {square}")

编程项目

1、发明国际象棋的价值
关于国际象棋的发明者,有着一个广为流传的神话。当地统治者非常高兴,要给国际象棋的发明者大量的黄金作为奖励。发明者提出了另–种奖励方案,他希望得到棋盘上堆放的麦粒,但是需要按以下的方式来摆放:在棋盘的第一个正方形格子的4个角上,各放上1颗麦粒;第二个正方形格子的4个角上各放上2颗麦粒;第3格的各个角上放4颗麦粒;第4格的各个角上放8颗麦粒,以此类推,每次粮食的数量增加一倍。统治者以为这样对他更有利,就接受了发明者的提议。棋盘上共有64个方格。
编1个程序计算以下内容:
(a)统治者要向发明者奖励麦粒的总数是多少?
(b)1颗麦粒重量约50毫克。小麦共重多少?
©选择1个地区(州、国家等),并确定将上述重量的小麦覆盖在该区域上,小麦的深度将是多少?提示输人区域的面积,然后输出的小麦的深度和所使用的单位。

2.折纸有多厚
从报纸中抽出一张,对折,再对折,继续对折。可以把它折叠30次吗?假设可以(你可能无法把它折叠8次以上)折叠30次,请问厚度为多少?假设纸的厚度是1/200厘米。编程序来解决这个难题。提示输人折叠次数,输出厚度,以米为单位。

3、海龟绘图:多边形
提示输入多边形的边数。利用正多边形的内角计算公式((边数-2)x180°)/边数)绘制多边形。可选项:提示输入1种颜色名称,用这种颜色填充多边形内部。

  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值