第三章Python的基本流程控制
1. 从键盘输入一个三位数,要求逆序输出它的各位数字。比如输入123输出为321,输入为100输出为001
python代码:
flag = True
while(flag):
number = int(eval(input('请输入一个三位数:')))
if number>= 100 and number < 1000:
flag = False
else:
print('不是三位数,重新输入')
print(str(number)[::-1])
测试效果:
2.输入一个年份,判断是否为闰年。
python代码:
year = int(input("输入一个年份: "))
if (year % 4) == 0:
if (year % 100) == 0:
if (year % 400) == 0:
print("{0} 是闰年".format(year)) # 整百年能被400整除的是闰年
else:
print("{0} 不是闰年".format(year))
else:
print("{0} 是闰年".format(year)) # 非整百年能被4整除的为闰年
else:
print("{0} 不是闰年".format(year))
测试效果:
3.输入一个季度,首先判断是否在1~4之间,然后判断该季度有那几个月, 并显示该季度中的月份。
python代码:
flag = True
while flag:
quarter = int(input("季度:"))
if quarter in range(1,5):
flag = False
break
if quarter == 1:
print("1月,2月,3月")
elif quarter == 2:
print("4月,5月,6月")
elif quarter == 3:
print("7月,8月,9月")
elif quarter == 4:
print("10月,11月,12月")
测试效果:
4.应用continue语句,计算1 ~ 100之间能被3整除的整数和。
python代码:
sum_value = 0
for number in range(1,101):
if number % 3 != 0:
continue
sum_value += number
print(sum_value)
测试效果:
5.输出2~ 1000之间的所有素数。
python代码:
for num in range(2, 100 + 1):
for i in range(2, num):
if (num % i) == 0:
break
else:
print(num, end=' ')
测试效果:
第四章Python四种典型结构
1.定义一个列表,然后正向、隔2个元素输出列表元素,以及逆序遍历各元素。
python代码:
list = [i for i in range(10)]
print(list)
print(list[::2])
print(list[::-1])
测试效果:
2.用input从键盘上输入一个整数数组nums和一个整数目标值target ,要求在该数组中找出和为目标值的那两个整数,并返回它们的下标。数组中同一元素在答案中不能重复出现。( 提示:从键盘输入的列表是字符串类型,需要用strip和split对其做操作。)
示例1 :
输入: nums = [2,7,11,15], target = 9
输出: [0,1]
解释:因为nums[0]+nums[1]== 9 ,返回[0,1]
示例2 :
输入: nums = [3,2,4], target= 6
输出: [1,2]
python代码:
print('请输入如 nums = [2,7,11,15], target = 9 格式的nums和target:')
nums = input()
# nums = ' nums = [ 2 , 7 , 11 , 15 ], target = 9 '
list = nums.strip().split('=')[1].strip().split(',')[:-1:]
target = nums.strip().split('=')[2].strip()
num = []
len = len(list)
for i in range(len):
temp = list[i].strip().strip('[').strip().strip(']').strip()
num.append(temp)
for a in range(len):
for b in range(a+1, len):
if int(num[a])+int(num[b])==int(target):
print('[',a,',',b,']')
exit(0)
测试效果:
3.创建新列表,判断原列表元素是否为素数,如果是则将存入新列表,如果不是则将其平方存入新列表。(不用循环)
python代码:
from math import sqrt
old_list = range(2, 100)
new_list = [ p for p in old_list if 0 not in [ p% d for d in range(2, int(sqrt(p))+1)] ]
print(new_list, end=' ')
测试效果:
4.创建新列表,判断原列表元素是否为偶数,如果是则将其平方存入新列表,如果不是则将其三次方存入新列表。(不用循环)
python代码:
old_list = range(10)
new_list = [x**2 if x%2==0 else x**3 for x in old_list]
print(new_list, end=' ')
测试效果:
第五章函数
1.定义函数计算斐波拉契数列。
python代码:
def recur_fibo(n):
'''
递归函数,输出斐波那契数列
:param n: 项数
:return:
'''
if n <= 1:
return n
else:
return (recur_fibo(n - 1) + recur_fibo(n - 2))
nterms = int(input("您要输出几项? "))
if nterms <= 0:
print("输入正数")
else:
print("斐波那契数列:")
for i in range(nterms):
print(recur_fibo(i))
测试效果:
2.回文数是一个正向和逆向都相同的整数,如123454321、9889。 编写函数判断一个整数是否是回文数。
解题思路:判断一个数是否是回文,可以先对这个数做转序,再与原数进行比较,如果相等,则是回文,如果不相等则不是回文,这个方法比较简单,但是效率很低。另一种方法是使用双指针来实现,算法很高效,时间复杂度很低。
python代码:
def is_palindrome(a):
s=str(a)
l=0
r=len(a)-1
while(l
测试效果:
3.编写函数,求两个正整数的最小公倍数。
python代码:
def lcm(x, y):
# 获取最大的数
if x > y:
greater = x
else:
greater = y
while (True):
if ((greater % x == 0) and (greater % y == 0)):
lcm = greater
break
greater += 1
return lcm
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))
print(num1, "和", num2, "的最小公倍数为", lcm(num1, num2))
测试效果:
4.编写函数,求两个正整数的最大公约数,要求用递归实现。
python代码:
def gcd(x,y):
result =x%y
if result == 0:
# print(x,y,result)
return y
else:
x = y
y =result
# print(x,y)
return gcd(x,y)
print(gcd(15,5))
测试效果:
5.定义一个函数,该函数可以返回从键盘中输入的三个数的最大值。
python代码:
def get_max(str): |
测试效果: