Python 练习题
1、打印从1到100的数字中所有能被3整除,又能被5整除的数字有哪些
#打印从1到100的数字中所有能被3整除,又能被5整除的数字有哪些
for i in range(1,101):
if(i % 3 == 0 and i % 5 == 0):
print(i)
'''
15
30
45
60
75
90
'''
复制代码
2、输入一个字符串返回满足以下条件的字符串
- 如果字符串长度大于 3,添加 ‘ing’ 到字符串的末尾
- 如果字符串是以 ‘ing’ 结尾,就在末尾添加 ‘ly’
- 如果字符串长度小于 3,返回原字符串
s = input()
if len(s) >= 3:
if s.endswith("ing"):
s += "ly"
else:
s += "ing"
else:
pass
print(s)
复制代码
3、判断回文
回文:62426 为回文数字
s = input()
#方法一 while 循环
l = len(s)
count = 1
i = 0
while i <= l/2:
if s[i] == s[l - i -1]:
count = 1
i = i + 1
else:
count = 0
break
if count == 1:
print("yes")
else:
print("no")
#方法二 reversed 函数
a = reversed(list(s))
if list(a) == list(s):
print("yes")
else:
print("no")
复制代码
4、创建一个 python 文件,接收 2 个参数(均为数字)并找出两个数字之间的所有素数(即只能被 1 和自身整除的数)
import math
import sys
'''
素数:除了 1 和它本身以外,不能被其他整数整除。
1 不是素数,最小的素数是 2,只要判断 [2,N] 以内的数是否为素数。
'''
def prime(n):
if n <= 1:
return 0
for i in range(2, n):
if n % i == 0:
return 0
return 1
'''
优化:
思考除了 2 以外,其余的偶数都不是素数,所以我们的范围缩小至 [2,√n+1] 内排除一半的计算量。
再看奇数,1 不是素数,从 3 开始,除了 3 以外,其余能被 3 整除的都是合数,那么在剩余的计算量中又排除了 1/3,
再看 5,除了 5 以外,其余能被 5 整除的都是合数,又在剩余的基础上排除了 1/5,加起来,一共在 [2,√n+1] 剩余范围内排除了近 3/4 的计算量。
'''
def prime1(n):
if n % 2 == 0:
return n == 2
if n % 3 == 0:
return n == 3
if n % 5 == 0:
return n == 5
for i in range(7, int(math.sqrt(n))+1, 2): #只考虑奇数作为可能因子
if n % i == 0:
return 0
return 1
if __name__ == "__main__":
m = int(input())
n = int(input())
big = m
small = n
if m >= n:
big = m
small = n
else:
big = n
small = m
for i in range(small, big+1):
if prime1(i):
print(i)
复制代码
5、落球计算
一球从 100 米高度自由落下,假设每次落地后反跳回原高度的一半,再落下,再弹起,请问第 6 次落地后会弹起多少米?
请分别使用 for 循环与 while 循环,并使用 break 与 continue 流程控制关键字
s = 100
i = 1
while i <= 6:
if s >= 0:
s = s/2
i = i+1
continue
else:
break
print(s)
for i in range(1,7):
s = s/2
print(s)
复制代码
6、输入一个字符串返回满足以下条件的字符串,找出与字符串的第一个字母相同的字母,把它们替换成 '*'
,除了第一个字母本身以外
例如: 输入'babble'
, 返回 'ba**le'
oldStr = input()
newStr = ""
for i,curS in enumerate(oldStr):
if curS == oldStr[0] and i != 0:
newStr += "*"
else:
newStr += curS
print(newStr)
复制代码