目录
(1)给定某一字符串s,对其中的每一字符c进行大小写转换:如果c是大写字母,将它转换成小写字母;如果c是小写字母,则将它转换成大写字母;如果不是字母,则不进行转换。
(3)计算1^2-2^2+3^2-4^2+···+97^2-98^2+99^2
(4)一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因比6就是“完数”。请编程找出100内的所有完数。
(6)输入一元二次方程的3个系数a,b,c,求方程ax^2+bx+c的根
1.选择题
1.c
2.b:
这道题,我做错了,我就写一下注释,x=2为整型,y=2.0为浮点型,两者不能用于作比较,作比较可定是不相等。
3.a 4.d 5.a 6.d 7.b 8.d 9.c 10.d 11.a
12.d
:这道题我也做错了,就解释一下。strip([char])在字符串上指向lstrip()
删除左边的空格和rstrip()
删除末尾的空格,s.strip(",")
为删除最左边和最右边两侧的逗号,最左侧没有逗号,最右侧有逗号,那就删去。replace(",",";")
将逗号替换成分号,strip在前先执行strip,后执行replace,所以为d选项。
2.简答题
(1)程序流程图包括哪些元素?
控制流;处理流;判断流;起始框和结束框
(2)pass语句的作用是什么?
pass为空语句,一般用作占位,该语句不影响其后语句的执行,为了保持程序结构的完整性而设计的
(3)跳转语句break和continue的区别是什么?
break语句:从循环体内部跳出,即结束循环,俗称断路语句
continue语句:终止当前这一轮语句,即跳过本轮剩余的语句,直接进入下一轮语句,俗称短路语句
区别:break是跳出循环,即结束循环;continue是跳出本次循环,如果循环还是没结束,那就进入下一次循环。
(4)简述for循环和while循环的执行过程。
for循环在每次循环之前都会执行初始化部分,然后判断循环条件是否满足,如果满足,则执行循环体内的代码,再执行循环变量的更新操作。
while循环:每次循环执行之前会先判断是否满足循环条件,如果满足则执行循环体内代码
for循环简洁,适合循环次数已知的情况,while循环更加灵活,适合循环次数未知的情况下使用
3.阅读程序
(1)下面程序的功能是什么?
a,b=2,1 sum=0 for i in range(20): sum+=a/b t=a a=a+b b=t print(sum)先是给a,b,sum赋值,分别是2,1,0;然后是利用 for循环,每次循环都将 a除以 b加 sum的值赋值给sum,t为中间变量,将a+b的值赋值给a,将a原先的值赋值给b,循环20次后打印 sum的值。
(2)以下程序的输出结果是什么?
for i in range(1,8): if i%4==0: break else: print(i,end=",")i从1开始,到4结束,假如 i%4=0,则会跳出循环,反之,打印 i的值。
i=1,i=2,i=3,输出结果:1,2,3,
(3)下面程序的输出结果是什么?
x="god" y="" for i in x: y+=str(ord(i)-ord('a')) print(y)
ord()
函数用于返回表示单个字符的Unicode码点。你也可以理解为ASCII值。
ord(character)
其中character:表示要获取的unicode码点的字符。逆操作是chr()
函数,它是接受一个Unicode码点,并返回对应的字符print(ord('A')) # 输出 65,因为大写字母 A 的 Unicode 码点是 65 print(ord('€')) # 输出 8364,因为欧元符号 € 的 Unicode 码点是 8364
str()
用于将给定的对象转换为字符串。num = 42 str_num = str(num) # 将整数 42 转换为字符串 '42' float_num = 3.14 str_float_num = str(float_num) # 将浮点数 3.14 转换为字符串 '3.14' my_list = [1, 2, 3] str_list = str(my_list) # 将列表 [1, 2, 3] 转换为字符串 '[1, 2, 3]'输出结果:6143
4.编程题
(1)给定某一字符串s,对其中的每一字符c进行大小写转换:如果c是大写字母,将它转换成小写字母;如果c是小写字母,则将它转换成大写字母;如果不是字母,则不进行转换。
a=input("请输入一个字符串:") if a.find('c')!=-1: b=a.replace('c','x') if b.find('C')!=-1: c=b.replace('C','c').replace('x','C') #这个是正确的方法 print(c)
a=input("请输入一个字符串:") if a.find('c')!=-1: b=a.replace('c','C') if b.find('C')!=-1: c=b.replace('C','c') print(c)
这个有逻辑错误,显示将 c变为 C,又将 C变为 c,这个是逻辑错误。希望大家引以为戒
(2)输入一个整数,将各位数字反转后输出
number=input("请输入一个整数:") reversed_number=int(str(number)[::-1]) print(reversed_number)
(3)计算1^2-2^2+3^2-4^2+···+97^2-98^2+99^2
sum=0 for i in range(1,100): if i%2==0: sum-=i*i else: sum+=i*i print(sum)
(4)一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因比6就是“完数”。请编程找出100内的所有完数。
for i in range(1,100): sum=0 for j in range(1,int(i/2+1)): if i%j==0: sum+=j if i==sum: print(i) print("是完数")
(5)输人两个正整数m和n,求其最大公约数和最小公倍数。
提示:在循环中,用较大数(初始值为m、n中的较大数)除以较小的数(初始值为m、n中的较小数),然后将小的一个数作为下一轮循环中较大的数,较大数除以较小数所取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0时,返回较大的数,此数即为m和n的最大公约数、最小公倍数为两数之积除以最大公约数。
print("m,n必须是正整数且m不等于n") m=int(input("please enter m:")) n=int(input("please enter n:")) a=m #后面还要用到m的值 b=n #后面还要用到n的值 #x=0 可以不对x进行初始化 if m<=0 or n<=0 or n==m: print("m,n必须是正整数且m不等于n") else: if m>n: while m%n!=0: m,n=n,m%n if n==0: break print(f"{n}是最大公约数") x=a*b/n print(f"{x}是最小公倍数") else: while n%m!=0: n,m=m,n%m if m==0: break print(f"{m}是最大公约数") x=a*b/m print(f"{x}是最小公倍数") #这个是我自己写的可能有些麻烦
(6)输入一元二次方程的3个系数a,b,c,求方程ax^2+bx+c的根
import cmath a=float(input("请输入二次项系数a:")) b=float(input("请输入一次项系数b:")) c=float(input("请输入常数项系数c:")) if a==0: print("请重新输入") else: discriminant=(b**2-4*a*c) if discriminant<0: print("无实数解") else: root1=(-b+cmath.sqrt(discriminant))/(2*a) root2=(-b-cmath.sqrt(discriminant))/(2*a) print(f"两个根分别为:{root1}和{root2}") #cmath为复数库