1.哪个选项不符合下面程序空白处的语法要求?
for var in ___:
print(var)
2.哪个选项关于循环结构的描述是错误的?
3.哪个选项是random库中用于生成随机小数的函数?
4.关于try-except,哪个选项的描述是错误的?
5.100以内素数之和
求100以内所有素数之和并输出。
素数指从大于1,且仅能被1和自己整除的整数。
提示:可以逐一判断100以内每个数是否为素数,然后求和。
(1)我的答案:
def prime(i):
for j in range(2,int(pow(i,0.5))+1):
if i%j == 0:
return 0
return (i)
sum = 0
for i in range(2,100):
if i == 2:
sum = sum + i
else:
sum = sum + prime(i)
print(sum)
①range(M,N)中的M和N都是整数,本题中如果不使用int()会报错
②判断素数的方法:
开根号法:从2到均整除判断,时间复杂度O(
)(原因:素数是因子为1和本身, 如果数c不是素数,则还有其他因子,其中的因子,假如为a,b.其中必有一个大于sqrt(c) ,一个小于sqrt(c) 。所以m必有一个小于或等于其平方根的因数,那么验证素数时就只需要验证到其平方根就可以了。即一个合数一定含有小于它平方根的质因子。)
(2)答案解析:
#Prime
def is_prime(n):
for i in range(2,n):
if n%i == 0:
return False
return True
sum = 0
for i in range(2,100):
if is_prime(i):
sum += i
print(sum)
①判断素数的方法:
最简单方法:从2到n-1每个数均整除判断,时间复杂度O(n)。
6.三位水仙花数
"水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。
例如:ABC是一个"3位水仙花数",则:A的3次方+B的3次方+C的3次方 = ABC。
请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果。
(1)我的答案:
#用数学思维解决问题
count=0
for i in range(100,999+1):
if pow(i//100,3)+pow(i//10%10,3)+pow(i%10,3) == i:
if count ==0:
print(i,end='')
count = 1
else:
print(",{}".format(i),end='')
①整除符号:// 。在python中,整数/整数得到的是浮点数。
(2)答案解析:
#用计算思维分析解决问题
s = ""
for i in range(100, 1000):
t = str(i)
if pow(eval(t[0]),3) + pow(eval(t[1]),3) + pow(eval(t[2]),3) == i :
s += "{},".format(i)
print(s[:-1])
①这里采用了s[:-1]方式不输出最后一个逗号。也可以把所有结果放到一个列表中,采用字符串的.join()方法输出结果。
7.四位玫瑰数
四位玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数。
请输出所有4位数的四位玫瑰数,按照从小到大顺序,每个数字一行。
for i in range(1000, 10000):
t = str(i)
if pow(eval(t[0]),4) + pow(eval(t[1]),4) + pow(eval(t[2]),4) +pow(eval(t[3]),4) == i :
print(i)
8.用户登录的三次机会
给用户三次输入用户名和密码的机会,要求如下:
1)如输入第一行输入用户名为‘Kate’,第二行输入密码为‘666666’,输出‘登录成功!’,退出程序;2)当一共有3次输入用户名或密码不正确输出“3次用户名或者密码均有误!退出程序。”。
(1)我的答案:
USER = 'Kate'
PASSWORD = '666666'
count = 0
for i in range(3):
user=input()
password=input()
if user==USER and password==PASSWORD:
print("登录成功!")
break
else:
count += 1
if count == 3:
print("3次用户名或者密码均有误!退出程序。")
①注意user和password要分别输入。
(2)答案解析:
count = 0
while count < 3:
name = input()
password = input()
if name == 'Kate'and password == '666666':
print("登录成功!")
break
else:
count += 1
if count == 3:
print("3次用户名或者密码均有误!退出程序。")
①运用while进行非确定次数循环。