第2关:找 m 到 n 之间的所有素数
任务描述
本关任务:编写一个能找 m 到 n 之间的所有素数的小程序。
相关知识
为了完成本关任务,你需要掌握: 1.遍历循环
遍历循环
确定次数的循环可以用for...in 结构的遍历实现。
编程要求
有人分析了战狼1中龙小云的入侵病毒的源代码
第二段代码的C语言版本如下:
分析图片中的第二段代码,功能应该是输出找 100 到 200 之间的所有素数,请用Python语言完成同样的功能。用户输入两个整数m和n(m<n),在同一行内输出m 到 n 之间的所有素数,各数字后跟一个空格。
测试说明
平台会对你编写的代码进行测试:
测试输入: 100
200
预期输出: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
def is_prime(num):
"""判断一个数是否为素数"""
if num <= 1:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
def find_primes(m, n):
"""找出m到n之间的所有素数"""
primes = []
for num in range(m, n + 1):
if is_prime(num):
primes.append(num)
return primes
# 获取用户输入
m = int(input())
n = int(input())
# 查找并输出素数
primes = find_primes(m, n)
print(" ".join(map(str, primes)))
第3关:找 100 到 999 之间的所有水仙花数
任务描述
本关任务:编写一个能找找 100 到 999 之间的所有水仙花数小程序。
测试说明
平台会对你编写的代码进行测试:
测试输入: 无输入
预期输出: 153 370 371 407
def is_armstrong_number(num):
"""判断一个数是否为水仙花数"""
digits = [int(d) for d in str(num)]
return sum(d**3 for d in digits) == num
def find_armstrong_numbers(m, n):
"""找出m到n之间的所有水仙花数"""
armstrong_numbers = []
for num in range(m, n + 1):
if is_armstrong_number(num):
armstrong_numbers.append(num)
return armstrong_numbers
# 获取用户输入
m = 100
n = 999
# 查找并输出水仙花数
armstrong_numbers = find_armstrong_numbers(m, n)
print(" ".join(map(str, armstrong_numbers)))
第4关:输入一个整数并找出其所有因数
测试说明
平台会对你编写的代码进行测试:
测试输入: 20
预期输出: 1 2 4 5 10 20
def find_factors(num):
factors = []
for i in range(1, num + 1):
if num % i == 0:
factors.append(i)
return factors
num = int(input())
# 查找并输出因数
factors = find_factors(num)
print(" ".join(map(str, factors)))
第5关:根据键盘输入的分数评出五分制等级
测试说明
平台会对你编写的代码进行测试:
测试输入: 100
预期输出: A
def grade(score):
if score >= 90:
return 'A'
elif score >= 80:
return 'B'
elif score >= 70:
return 'C'
elif score >= 60:
return 'D'
else:
return 'E'
score = int(input())
print(grade(score))
第6关:根据输入判断是星期几
任务描述
本关任务:编写一个能根据输入判断是星期几的小程序。
def get_weekday_first_letter(first_letter, second_letter=None):
first_letter = first_letter.lower()
if first_letter == 'm':
return "Monday"
elif first_letter == 't':
if second_letter == 'e':
return "Tuesday"
elif second_letter == 'h' or second_letter == 'r' :
return "Thursday"
return "无法匹配"
elif first_letter == 'w':
return "Wednesday"
elif first_letter == 'f':
return "Friday"
elif first_letter == 's':
if second_letter == 't' or second_letter == 'r':
return "Saturday"
elif second_letter == 'n':
return "Sunday"
return "无法匹配"
else:
return "无法匹配"
def main():
first_letter = input().lower()
if first_letter == 't' or first_letter == 's':
second_letter = input().lower()
result = get_weekday_first_letter(first_letter, second_letter)
else:
result = get_weekday_first_letter(first_letter)
print(result)
if __name__ == "__main__":
main()