Python常见编程题(一)

1.从键盘输入一个3位数,计算并输出百位、十位、个位上的数字。

#方法一
num=input("请输入一个3位数:")  #从键盘获取字符串
num=int(num)  #通过int()函数将num字符串转换成整数
a=num//100  #双斜线"//"表示整除,用来计算num的百位
b=num//10%10  #num//10获得百位和十位,通过num//10%10得到十位
c=num%10 #获取个位
print("百位是:%d,十位是%d,个位是:%d"%(a,b,c))

#方法二
num=input("请输入一个3位数:")  #从键盘获取字符串
a,b,c=map(int,num)  #把num字符串转换成int类型,并将num的数拆分,分别赋值给a,b,c
print("百位是:%d,十位是%d,个位是:%d"%(a,b,c))

2.接收用户输入的一个字符串,如果是正整数就判断是否能同时被3和7整除,并输出判断结果。
在这里插入图片描述

str=input("请输入数字:")
if str.isnumeric(): #当字符串中的所有字符都是数字时,str.isnumeric()方法返回True,否则是False
    num=int(str) #将字符串str转为整型,并存到num变量中
    if num%3==0 and num%7==0: #num%3==0说明num可以被3整除,如果条件成立,则说明num中存放的数据能同时被3和7整除
        print("%d能同时被3和7整除"%num)
    else: #if后的条件不成立,说明num无法被3或7整除
        print("%d不能同时被3和7整除"%num)
else: #与第一个if语句对应,说明字符串中有些字符不是数字
    print("请输入正整数")

3.根据年份和月份计算当月的天数。提示:闰年2月份有29天,不是闰年的二月份有28天。其中,判断是否为闰年的方法为:如果年份能被4整除且不能被100整除,或年份能被400整除,则该年为闰年。
在这里插入图片描述

year=int(input("请输入年份:")) #通过int函数把输入的字符串转换为整数
month=int(input("请输入月份:"))
if month in [1,3,5,7,8,10,12]: #in用来判断month变量的值是否在序列[1,3,5,7,8,10,12]中
    print("%d年%d月有31天" % (year,month))
elif month in [4,6,9,11]: #判断month变量的值是否在序列[4,6,9,11]中
    print("%d年%d月有30天" % (year, month))
else: #只剩下2月份
    if year%400==0 or (year%4==0 and year%100!=0):
    #如果输入的年份是闰年,则2月份有29天
        print("%d年%d月有29天" % (year, month))
    else:  #输入的年份不是闰年,2月份有28天
        print("%d年%d月有28天" % (year, month))

4.快递计费系统。某快递点提供华东地区、华南地区、华北地区的寄件服务,其中华东地区的编号为01、华南地区的编号为02、华北地区的编号为03,该快递点寄件价目表如下图所示。
在这里插入图片描述在这里插入图片描述

num=input("请选择地区编号(01/02/03):")
weight = float(input("请输入行李重量(kg):"))
if num=='01': #如果选择是01编号,对应的是华东地区
    print("所属地区为:华东地区(01)")
    if weight<=2: #2kg以内的都是13元/kg
        price=13*weight
        print("行李重量为%d,总费用是%.1f"%(weight,price))
    else: #行李重量超过2kg,超出的部分是3元/kg
        price=13*2+(weight-2)*3  #超出的部分是(weight-2)
        print("行李重量为%d,总费用是%.1f" % (weight, price))
if num=='02':
    print("所属地区为:华南地区(02)")
    if weight<=2:
        price=12*weight
        print("行李重量为%d,总费用是%.1f"%(weight,price))
    else: #行李重量超过2kg,超出的部分是2元/kg
        price=12*2+(weight-2)*2
        print("行李重量为%d,总费用是%.1f" % (weight, price))
if num=='03':
    print("所属地区为:华北地区(03)")
    if weight<=2:
        price=14*weight
        print("行李重量为%d,总费用是%.1f"%(weight,price))
    else:  #行李重量超过2kg,超出的部分是4元/kg
        price=14*2+(weight-2)*4
        print("行李重量为%d,总费用是%.1f" % (weight, price))

5.用户输入两个整数,计算这两个整数之间的所有奇数之和、所有素数之和并输出结果。
在这里插入图片描述

m=int(input("输入第一个整数:"))
n=int(input("输入第二个整数:"))
sum1=0 #sum1变量用来保存奇数之和
print("奇数有:",end="")
for i in range(m,n+1): #range(start,end,step)用来生成一些数字,从start开始,到end结束(但不包括end),以步长step生成数字(可省略,默认为1)
#使用for循环遍历m和n之间的所有数,每次for循环将数值赋值给变量i
    if i%2!=0: #如果i的值不能被2整除,说明i是奇数
        print(i,end=" ")
        sum1+=i   #等同于sum1=sum1+i,把奇数i的值与sum1相加,并重新赋值给sum1
print("\n%d和%d之间的所有奇数之和为%d"%(m,n,sum1))
sum2=0 #sum2变量用来保存素数之和
print("素数有:",end="")
while m<=n: #循环的条件是输入的第一个数小于等于第二个数
    k=2 #定义一个变量k,而k是[2,m/2]之间的数
    while k<=(m/2): 
    #判断一个数m是否为素数,只需判断这个数能否被[2,m/2]之间的数整除即可,如果能被整除说明m不是素数
        if m%k==0: #如果m能被k整除,使用break直接结束当前while循环
            break
        k+=1 #如果m能不被k整除,则k+1进入下次while循环,判断m是否能被k+1整除
    if k>(m/2): #k大于m/2,则说明m不能被[2,m/2]之间的数整除
        print(m,end=" ") #此时m是素数
        sum2+=m  #等同于sum2=sum2+m,把奇数m的值与sum2相加,并重新赋值给sum2
    m+=1 #m+1之后进入下一次while循环(判断m<=n是否成立)
print("\n%d和%d之间的所有素数之和为%d"%(m,n,sum2))

6.逢七拍手游戏。规则如下:从1开始顺序数数,数到有7或者包含7的倍数的时候拍手(显示为“*”)。要求编写程序,模拟实现逢七拍手游戏,输出100以内(包括100)的数字。
在这里插入图片描述

for i in range(1,101): #循环1-100之间的数,每次循环赋值给i
    if i%10==0: #1行显示10个数
        print()  #换行
    if i%7==0 or str(i).find('7')!=-1: #因字符串有find()方法,用于查找某个字符是否存在,
    #如果值为-1说明字符不存在,反之存在。所以需通过str(i)先把i转换为字符串
    #如果i的值能被7整除,或数字中包含7
        print("*",end=" ") #显示为*
        continue 
    print(i,end=" ")  #不能被7整除或数字中不包含7,则数字正常显示

7.登录系统账号密码检测,即检测用户输入的账号密码是否正确。若用户输入的账号或密码不正确,提示“用户名或密码错误”和“您还有*次机会”;若用户输入的账号和密码正确,提示“登录成功”;若输入的账号密码错误次数超过3次,提示“输入错误次数过多,请稍后再试”。
在这里插入图片描述

count=3  #用来保存输入的次数
while count>0:
    id = input("请输入账号:")
    pwd = input("请输入密码:")
    if id=='admin' and pwd=='123': #设置账号是admin,密码是123
        print("登录成功")
        break #若登录成功,直接退出整个循环
    else: #若输入的账号或密码错误
        print("用户名或密码错误")
        count -= 1 #输入错误的账号和密码后次数-1
        if count==0: #当次数为0
            print("输入错误次数过多,请稍后再试")
        else: #还有剩余次数
            print("您还有%d次机会" % count)

8.猜数游戏。程序随机生成一个0-100的整数,用户通过键盘输入猜测的数字。如果猜测的数字大于生成数,则提示“很遗憾,你猜大了”;如果猜测的数字小于生成数,则提示“很遗憾,你猜小了”;循环输入,直至猜中生成数,显示“猜了n次,恭喜猜中了!”,其中n为用户输入的次数。提示:程序随机生成数通过random模块中的randint()函数实现,randint(a, b)表示生成闭区间 [a,b] 中的一个随机整数,包含端点值a,b。
在这里插入图片描述

import random #通过import导入random模块,用来生成随机数
num=random.randint(0,100) #利用random模块中的randint函数生成随机数(整数类型),保存到num变量
guess=int(input("请输入数字:"))  #把输入的数字从字符串类型转为整型
count=1  #用来保存猜的次数
while guess!=num:  #当没有猜中时
    if guess>num: #若猜的数字比随机数大
        print("很遗憾,你猜大了")
    if guess<num: #若猜的数字比随机数小
        print("很遗憾,你猜小了")
    count += 1  #此次未猜中,所以次数+1
    guess = int(input("请输入数字:")) #再次输入
print("猜了%d次,恭喜猜中了!"%count) #在while循环结束后,说明猜中了,显示次数
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值