python小练习(1)

第三章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<r):
        if s[l]!=s[r]:
            return False
        l+=1
        r-=1
    return True

x=input('输入一个整数:')
print(is_palindrome(x))

测试效果:

 

 

 

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):
    str = str.strip().split(
' ')
   
return max(int(i) for i in str)

input =
input('输入三个数,用空格分开:')
print('最大值为', get_max(input))

测试效果:

 

 

 

  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星羽空间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值