python入门到精通 练习题30道(初级)

主要给学习Python的新手们分享了几道简单练习题,文中给出了详细的示例代码供大家学习参考,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们来一起学习学习吧。

题目1

编程实现,让用户输入一个整数n,打印输出n以内的全部大于0的偶数(不包含n)

# 方法1==================================================
# 让用户输入一个数字
num=int(input("请输入一个整数"))
# 判断是否满足循环条件,如果满足,则进入循环
while num>0:
    if num%2 == 0:
        # 打印数字
        print(num)
    # 修改num的值,让其自减1【目的是为了将来能结束循环】    
    num -= 1
 

# 方法2================================================== 
# 让用户输入一个数字
userInput=int(input("请输入一个整数"))

# 通过range直接生成偶数
for num in range(2,userInput+1,2):
    print(num)

题目2

编程实现,让用户输入三个整数,要求打印输出最大的和最小的数字。

# 方法1:用列表的max和min方法=====================================
#定义空列表
li = []

# 通过for循环,让用户输入三个数字,并依次加入到列表中
for num in range(1,4):
    userInput = input("请输入数字: ")
    li.append(int(userInput))

# 输出列表中的所有的数
print(li)
# 输出列表中的最大的数
print(max(li))
# 输出列表中的最小的数
print(min(li))



# 方法2:用比较数字大小的方法=======================================
# 让用户输入一个数字
userInput = int(input("请输入数字:"))   

# 定义一个变量,保存最大的数
maxNum = userInput          
# 定义一个变量,保存最小的数
minNum = userInput          

for num in range(1,3):
    # 让用户输入一个数字
    userInput = int(input("请输入数字:"))    

    # 判断maxNum中保存的数字和新输入的数字谁大谁小
    if maxNum < userInput:
        # 如果新输入的数字,比如maxNum中保存的数字还大,说明maxNum中的数已经不是最大的数
        maxNum = userInput

    # 判断minNum中保存的数字和新输入的数字谁大谁小
    if minNum > userInput:
        minNum = userInput

print(maxNum,minNum)

题目3

编程实现,使用循环实现输出2-3+4-5+6-7+8-9+10 的和

sum1 = 0   # 定义变量保存2 4 6 8 10的和
sum2 = 0   # 定义变量保存3 5 7 9的和

# 计算2 4 6 8 10的和
for m in range(2,11,2):
    sum1 += m

# 计算3 5 7 9的和
for n in range(3,10,2):
    sum2 += n

# 计算2-3+4-5+6-7+8-9+10,也就是计算(2+4+6+8+10) -(3+5+7+9)
res = sum1 - sum2
print(res)

题目4

编程实现,使用循环实现输出 1,2,3,4,5, 7,8,9, 11,12

# 生成1-12的数字
for num in range(1,13):
    # 如果数字是6 或者 10,则立刻开始下一次循环
    if num==6 or num==10:
        continue

    print(num)

题目5

编程实现,使用while 循环输出100-50,从大到小,如100,99,98…,到50时再从0循环输出到50,然后结束

# 方法1:用两个独立的循环================================================
n = 100
m = 0
while n>=50:
    print(n)
    n -= 1

while m<=50:
    print(m)
    m += 1
    
    
# 方法2:用一个循环 ======================================================
# 定义变量m,用于定义输出100~50之间的数
m = 100
# 定义变量n,用于实现while的循环控制,并输出0-50之间的数
n = 0
# 开始循环
while n<=50:
    if m>=50:
        print(m)
    else:
        print(n)
        n+=1
    m -= 1  

题目6

编程实现,使用 while 循环实现输出 1-100 内的所有奇数

# 方法1:用range实现=====================================
for n in range(1,101,2):
    print(n)


# 方法2:用while=========================================
n = 1
while n<101:
    if n%2 == 1:
        print(n)
    n += 1

题目7

编程实现,让用户输入行数和高度,打印一个矩形方框如:

##########
#        #
#        #
#        #
##########
# 方法1==============================================
h = int(input("请输入高度:"))
w = int(input("请输入宽度:"))

# 打印 h 行 #,每行有w个 #

# 打印第一行
print("#"*w)

# 打印中间的行
for n in range(h-2):
    print("#",end="")
    print(" "*(w-2),end="")
    print("#")
    
# 打印最后一行
print("#"*w)

# 方法2================================================

height = int(input("请输入高度:"))
weidth = int(input("请输入宽度:"))
number = 1
while number <= height:
    if number == 1 or number ==height:
        print("#"*weidth)
    elif number > 1 and number < height:
        space = weidth - 2
        print("#",end="")
        print(" "*space,end="")
        print("#")
    number +=1

题目8、编程实现,让用户输入一个字符串

     判断用户输入的字符串有几个字符'a'

     判断用户输入的字符串有几个字符'a'

userInput = input("请输入一句话: ")

m=0
n=0

for char in userInput:
    if char == 'a':
        m += 1
    elif char == 'b':
        n += 1

print("a的个数%d  b的个数%d" %(m,n))

题目9

重复让用户输入一个单词,直到用户输入bye才退出,统计一下,用户一共输入了多少个单词?

# 方法1===================================
import sys
n = 0
while True:
    userInput = input("请输入:")
    if userInput = "bye":
        print("您一共输入了%d个单词"%(n))
        sys.exit(0)
	else:
        n+=1
        
# 方法2===================================
n = 0
while True:
    userInput = input("请输入:")
    if userInput = "bye":
        print("您一共输入了%d个单词"%(n))
        break
	else:
        n+=1

题目10  编程实现,模拟出租车计价器,具体收费标准如下

             3公里以内收费13元

             超出3公里以外,每公里基本单价2.3元/公里

             空驶费:超过15公里后每公里加收1.15元空驶费

userInput = float(input("请输入: "))
if userInput <= 3:
    feiyong = 13.0
elif userInput >3 and userInput <=15:
    feiyong = (userInput-3)*2.3 + 13
else:
    feiyong = 13+(userInput-3)*2.3+(userInput-15)*1.15

print("你需要支付%.1f"%(feiyong))

题目11

实现用户输入用户名和密码,当用户名为 seven 或 alex 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次

# 方法1 ==============================================
n = 1
while True:
    # 判断用户是否已经输入了三次
    if n > 3:
        print("你已经输入了3次,再见")
        break
        
    # 如果不到三次,就让n加1
    n += 1
    
    # 让用户输入,并判断
    uName = input("用户名: ")
    uPass = input("密  码: ")
    if uName == "alex" or uName == "seven":
        if uPass == "123":
            print("登录成功")
            break
        else:
            print("登录失败")
    else:
        print("登录失败")


# 方法2 =============================================
n = 1
while n<=3:
    # 如果不到三次,就让n加1
    n += 1

    # 让用户输入,并判断
    uName = input("用户名: ")
    uPass = input("密  码: ")
    if uName == "alex" or uName == "seven":
        if uPass == "123":
            print("登录成功")
            break
        else:
            print("登录失败")
    else:
        print("登录失败")

题目12 

编程实现,输入一年份,判断该年份是否是闰年并输出结果。凡符合下面两个条件之一的年份是闰年。

能被4整除但不能被100整除

能被400整除。

# 方法1 ===============================================
year = int(input("请输入年份:"))
if (year%4 == 0 and year %100 !=0) or (year%400 ==0):
    print("闰年")
else:
    print("非闰年")

题目13

编程实现,一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

sum = 0
h = 100
for num in range(1,4):
    if num == 1:
		sum = h + sum
    else:
        sum = h*2 + sum
    h = h*0.5
print(sum)

题目14

编程计算BMI值【公式是:BMI = 体重(公斤) / 身高*身高(米)】,并根据BMI指数:

  • 低于18.5:过轻

  • 18.5-25:正常

  • 25-28:过重

  • 28-32:肥胖

  • 高于32:严重肥胖

  • weight=float(input("请输入你的体重:"))
    height=float(input("请输入你的身高:"))
    bmi = weight/height**2
    
    if bmi <18.5:
        print("你的体重太轻了")
    elif bmi >=18.5 and bmi<25:
        print("你的体重正常") 
        ...
    print("体重是 %.2f,身高%.2f,bmi=%.2f"%(weight,height,bmi))

    题目15

    编程实现,让用户输入10个数字,要求输出这10个数字,并输出10个数字中最大的和最小的数字

    # 方法1 ==================================================
    # 让用户输入一个数字
    num = int(input("请输入一个数字: "))
    # 定义变量max和min,让两个的初始值都是num
    min=max=num
    
    # 定义变量n,用来实现循环9次【前面已经输入一个第一个数字了】
    n=9
    while n>=1:
        num = int(input("请输入一个数字: "))
        # min变量中保存的是最小的
        # 如果min中的数字比刚如数的数字还大,说明刚输入的数字小
        # 此时就就将刚输入的数字替换掉min中原有的数字
        if min >= num:
            min = num
        elif max <= num:
            max = num
    	n-=1
    
    print("max=%d, min=%d"%(max,min))
    
    
    # 方法2 ==================================================
    # 定义空列表
    li = []
    # 循环让用户输入,将用户输入的内容添加到列表中
    for num in range(1,11):
        userInput = int(input("enter a number: "))
        li.append(userInput)
        
    # 获取列表的最大和最小数
    maxNum = max(li)
    minNum = min(li)
    
    print("全部数字列表:",li)
    print("最大的是:",maxNum)
    print("最小的是:",minNum)

    题目16

    编程实现,让用户输入一个季度数【1-4】,然后输出这个季度有那几个月,如果输入不是1-4的整数,提示用户您输错了,例如输入1,就提示1季度也有1月 2月 3月

    userInput = int(input("请输入季度[1-4]: "))
    if userInput == 1:
        print("一季度有1月2月3月")
    elif userInput == 2:
        print("二季度有4月5月6月")
    elif userInput == 3:
        print("三季度有7月8月9月")
    elif userInput == 4:
        print("四季度有10月11月12月")
    else:
        print("error.")

    题目17

    用程序计算100以内有多少个3的整数倍数字

    # 方法1 =======================================
    sum = 0
    for num in range(1,101):
        if num%3 == 0:
            sum += 1
    print(sum)
    
    # 方法2 =======================================
    sum = 0
    n=1
    while n<100:
        if n%3 == 0:
            sum +=1
        n += 1
    print(sum)

    题目18

    编程实现,用程序打印效果

    *
    **
    ***
    ****
    *****
    ****
    ***
    **
    *

    n=1
    m=4
    while n<=5:
        print("*"*n)
        n+=1
    while m>=1:
        print("*"*m)
        m-=1

    题目19

    打印99乘法表

    # 方法1:=============================================
    for m in range(1,10):
        for n in range(1,m+1):
            print("%d*%d=%d"%(n,m,m*n),end=" ")
        print("")
    
    # 方法2 ==============================================
    for n in range(1,10):
        for m in range(1,10):
            if m <= n:
                print("%d*%d=%d"%(m,n,m*n),end=" ")
            else:
                print("")
                break

    题目20

    用两种方法实现判断用户输入的内容中是否有c,要求最多输入三次

    number = 3
    while number > 0:
         userinput = input("输入内容:")
         if "c" in userinput:
             print("输出的内容有c")
             break
         else:
             number -= 1
             print("输出的内容没有c")

    题目21

    案例1:让用户输入数字,实现输出结果是

  • 如果用户输入了q,停止让用户输入

  • 当用户输入了q,显示输出结果::数字1+数字2+数字3….

  • # 定义空列表,用于存储用户每次输入的内容
    li = []
    while True:
        # 让用户输入输入
        str = input("请输入数字:")
        # 如果用户输入了q,停止让用户输入
        if str == "q":
            print("over")
            break
    
        # 将用户输入的内容作为一个元素添加到列表中
        li.append(str)
    
    # 将列表中的元素用+拼接成一个字符串
    res = "+".join(li)
    # 输出拼接成的哪个最终字符串
    print(res)

    题目22

    让用户输入n数字

  • 如果用户输入了q,停止让用户输入;如果用户没有输入q,就继续输入

  • 停止输入后,显示所有用户输入数字,和最大数以及最小数

  • # 定义空列表,用于存储用户每次输入的内容
    li = []
    while True:
        # 让用户输入输入
        str = input("请输入数字:")
        # 如果用户输入了q,停止让用户输入
        if str == "q":
            print("over")
            break
    
        # 将用户输入的内容保存到列表中
        li.append(int(str))
    
    # 输出列表,也就是输出用户所输入的全部的数字
    print(li)
    print(max(li))
    print(min(li))

    题目23

    让用户随意输入内容,实现用户输入的内容始终在框内,而且居中

    userinput = input("输入内容:")
    userinputNum = len(userinput)
    space = 3
    space_1 = space*2
    print("+",end="")
    print("-"*userinputNum+"-"*space_1,end="")
    print("+")
    print("|"+" "*space+userinput+" "*space+"|")
    print("+",end="")
    print("-"*userinputNum+"-"*space_1,end="")
    print("+")
    

    题目24

    生成一个1-100的列表

    # 方法1:循环生成100个数字 - for 版
    li = []
    for n in range(1,101):
    	li.append(n)
    	
    # 方法2:循环生成100个数字 - while 版
    li = []
    n=1
    while n<=100:
    	li.append(n)
    	n += 1

    题目25

    让 用户输一段话,判断一共有多少个单词?

    userInput = input("请输入一段内容:")
    n = 1
    # userInput  abc qq test 123 hhaha hello world qq abcd
    for char in userInput:
        if char == " ":
            n += 1
    print(n)
    

    题目26

    逐一打印输出列表中的元素

    
    li  = ["a","b","c","d"]
    li.reverse               # 对li中的内容进行逆序排序
    while True:       
        print(li.pop())      # 每次循环,用pop方法,从列表中取出一个元素,并打印输出
        num = len(li)        # 计算列表中剩余的元素数量
        if num == 0:         # 取完后,剩余的元素个数为0,此时结束循环
            break
         

    题目27

    将字符串abc123转换为321cba

    str = "abc123"         # 定义字符串变量 
    print(str)             # 输出结果
    
    str = reversed(str)    # 将字符串逆序                            321cba
    li = list(str)         # 将逆序后的字符串对象转换为列表             [3,2,1,c,b,a]
    str = "".join(li)      # 通过join方法,将列表中的元素拼接成字符串    321cba
    print(str)

    题目28

    li1 = [3,2,1,7,6,4,5] 实现正序和逆序排序

    li1 = [3,2,1,7,6,4,5]
    
    li1.sort()
    print(li1)
    
    li1.sort(reverse=True)
    print(li1)

    题目29:购物车

    要求

  • 让用户输入账户余额

  • 自动打印商品名称和价格,

  • 判断余额

  • 如果余额不足,则提示,并退出

  • 同时计算余额是否可以购买至少一个产品,让用户输入产品编号和数量

  • 要求可以实现在买了一个产品后可以继续购买其他产品

  • import sys
    userInput = float(input("输入账户余额: "))
    price = ["", 4.8 , 3.8 , 2 , 4288]
    print("*" * 30, "\n""商品1.瓜子:4.8元""\n""商品2.花生:3.8""\n""商品3.矿泉水:2元""\n""商品4.3060显卡:4288元")
    print("*" * 30)
    while True:
        if userInput >= price[3]:
            commodity_number = input("输入商品编号(输入q退出):")
            if commodity_number == "q" or commodity_number == "Q":
                    print("欢迎下次光临")
                    sys.exit()
            else:
                    pass
            commodity_number1 = input("请输入商品数量:")
            if float(commodity_number) < 1 or float(commodity_number) > 4:
                print("没有该件商品")
                continue
            elif price[int(commodity_number)]*(float(commodity_number1)) > userInput:
                print("您的余额不足以购买此商品")
                continue
            else:
                print("购买成功!")
                userInput = userInput - float(commodity_number1) * price[int(commodity_number)]
                userInput_1 = input("余额还有%.2f,是否继续购买Y|N:"%(userInput))
                if userInput_1 == "y" or userInput_1 == "Y":
                    continue
                if userInput_1 == "N" or userInput_1 == "n":
                   print("欢迎下次光临")
                   sys.exit()
        else:
            print("余额不足够购买任意商品")
            sys.exit(1)
    

    题目30

    让用户输入个人基本信息,包括 姓名、电话、住址、年龄,通过字典保存用户的数据信息,当用户输入q的时候,结束输入

    结束输入后,打印显示全部的用户名,并要求选择一个名称

    然后打印输出这个用户的全部信息,输出信息的格式:用户 xxx,电话是xxx,地址是xxx,年龄是xxx

    user_list = []
    user_dict={}
    while True:
        userinput_name = input("输入姓名按q退出:").strip().lower()
        if userinput_name == "q":
            break
        else:
            userinput_tel = input("输入电话:").strip()
            userinput_addr = input("输入地址:").strip()
            userinput_age = input("输入年龄:").strip()
            user_dict[userinput_name] = { "tel":userinput_tel, "addr": userinput_addr, "age": userinput_age}
            user_list.append(userinput_name)
            continue
    print("====================用户菜单=======================")
    num = 1
    for listnum in user_list:
        print("%s. %s"%(num,listnum))
        num += 1
    userinput = input("选择一个用户查看:").lower().strip()
    name = user_list[int(userinput)-1]
    tel = user_dict[user_list[int(userinput)-1]]["tel"]
    addr = user_dict[user_list[int(userinput)-1]]["addr"]
    age = user_dict[user_list[int(userinput)-1]]["age"]
    print("用户名是:%s 电话号是:%s 地址是:%s 年龄是:%s"%(name,tel,addr,age))

    来源:love9599

    物联沃分享整理
    物联沃-IOTWORD物联网 » python入门到精通 练习题30道(初级)

    发表评论