Python经典基础习题(选择与循环结构)

目录

1.编写程序,计算小于1000的所有整数中能够同时被5和7整除的最大整数。

2.编写程序,计算1+2+。。。+100的和。

3.编写程序输出100以内的素数。

4.编写程序,实现抓狐狸游戏。假设墙上有5个洞(编号分别为0、1、2、3、4),其中一个洞里有狐狸,人类玩家输入洞口编号,如果洞里有狐狸就抓到了;如果洞里没有狐狸就第二天再来抓。但在第二天人类玩家来抓之前,狐狸会跳到隔壁的洞里。

5.小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元正好花掉,可有哪些购买结合?

6.求两个数的最大公约数和最小公倍数。(提示:公约数一定小于等于两数中的小的那个数,且能同时被两个数整除;公倍数一定大于等于两数中的大数,且是大数的倍数又能被两数中的小数整除)

7.编写程序,求1!+3!+5!+7!+9!。

8.编写程序,让用户输入一个整数,如果输入的是正数就输出1,如果输入的是负数就输出-1,否则输出0。

9.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

10.某百货公司为了促销,采用购物打折的办法。1000元以上者,按九五折优惠;2000元以上者,按九折优惠;3000元以上者,按八五折优惠;5000元以上者,按八折优惠。编写程序,输入购物款数,计算并输出优惠价。


1.编写程序,计算小于1000的所有整数中能够同时被5和7整除的最大整数。

程序代码:

a = []
for i in range(1000):
    if i%5 == 0 and i%7 == 0:
        a.append(i)
j=max(a)
print(j)

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue3/01.py
980

进程已结束,退出代码0


2.编写程序,计算1+2+。。。+100的和。

程序代码:

a = []
for i in range(1,101):
    a.append(i)
b=sum(a)
print(b)

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue3/02.py
5050

进程已结束,退出代码0

3.编写程序输出100以内的素数。

程序代码:

a = []
for x in range(100):
    if x <2:
        continue
    for i in range(2,x):
        if x % i == 0:
            break
    else:
        a.append(x)
print(a)

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue3/03.py
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

进程已结束,退出代码0

4.编写程序,实现抓狐狸游戏。假设墙上有5个洞(编号分别为0、1、2、3、4),其中一个洞里有狐狸,人类玩家输入洞口编号,如果洞里有狐狸就抓到了;如果洞里没有狐狸就第二天再来抓。但在第二天人类玩家来抓之前,狐狸会跳到隔壁的洞里。

程序代码:

from random import sample
print("游戏开始啦!")
fox =sample(range(5),1)
a = int("".join(list(map(str, fox))))
print(a)
while 1:
    x = int(input("请输入你选择的洞口:"))
    if x != a:
        print("错啦!明天再来吧!")
        print("第二天啦!")
        if a < 4:
            a += 1
        if a == 4:
            a -= 1
        print()
        continue
    if x == a:
        print("抓到狐狸啦!")
        exit(0)

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue3/04.py
游戏开始啦!
0
请输入你选择的洞口:1
错啦!明天再来吧!
第二天啦!

请输入你选择的洞口:2
错啦!明天再来吧!
第二天啦!

请输入你选择的洞口:3
错啦!明天再来吧!
第二天啦!

请输入你选择的洞口:4
错啦!明天再来吧!
第二天啦!

请输入你选择的洞口:2
错啦!明天再来吧!
第二天啦!

请输入你选择的洞口:3
抓到狐狸啦!

进程已结束,退出代码0

5.小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元正好花掉,可有哪些购买结合?

程序代码:

for i in range(7):
    for j in range(51):
        for k in range(20):
            if 15*i+2*j+k*5 ==100:
                print("洗发水:",i,"瓶","香皂:",j,"块","牙刷:",k,"把")

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue3/05.py
洗发水: 0 瓶 香皂: 5 块 牙刷: 18 把
洗发水: 0 瓶 香皂: 10 块 牙刷: 16 把
洗发水: 0 瓶 香皂: 15 块 牙刷: 14 把
洗发水: 0 瓶 香皂: 20 块 牙刷: 12 把
洗发水: 0 瓶 香皂: 25 块 牙刷: 10 把
洗发水: 0 瓶 香皂: 30 块 牙刷: 8 把
洗发水: 0 瓶 香皂: 35 块 牙刷: 6 把
洗发水: 0 瓶 香皂: 40 块 牙刷: 4 把
洗发水: 0 瓶 香皂: 45 块 牙刷: 2 把
洗发水: 0 瓶 香皂: 50 块 牙刷: 0 把
洗发水: 1 瓶 香皂: 0 块 牙刷: 17 把
洗发水: 1 瓶 香皂: 5 块 牙刷: 15 把
洗发水: 1 瓶 香皂: 10 块 牙刷: 13 把
洗发水: 1 瓶 香皂: 15 块 牙刷: 11 把
洗发水: 1 瓶 香皂: 20 块 牙刷: 9 把
洗发水: 1 瓶 香皂: 25 块 牙刷: 7 把
洗发水: 1 瓶 香皂: 30 块 牙刷: 5 把
洗发水: 1 瓶 香皂: 35 块 牙刷: 3 把
洗发水: 1 瓶 香皂: 40 块 牙刷: 1 把
洗发水: 2 瓶 香皂: 0 块 牙刷: 14 把
洗发水: 2 瓶 香皂: 5 块 牙刷: 12 把
洗发水: 2 瓶 香皂: 10 块 牙刷: 10 把
洗发水: 2 瓶 香皂: 15 块 牙刷: 8 把
洗发水: 2 瓶 香皂: 20 块 牙刷: 6 把
洗发水: 2 瓶 香皂: 25 块 牙刷: 4 把
洗发水: 2 瓶 香皂: 30 块 牙刷: 2 把
洗发水: 2 瓶 香皂: 35 块 牙刷: 0 把
洗发水: 3 瓶 香皂: 0 块 牙刷: 11 把
洗发水: 3 瓶 香皂: 5 块 牙刷: 9 把
洗发水: 3 瓶 香皂: 10 块 牙刷: 7 把
洗发水: 3 瓶 香皂: 15 块 牙刷: 5 把
洗发水: 3 瓶 香皂: 20 块 牙刷: 3 把
洗发水: 3 瓶 香皂: 25 块 牙刷: 1 把
洗发水: 4 瓶 香皂: 0 块 牙刷: 8 把
洗发水: 4 瓶 香皂: 5 块 牙刷: 6 把
洗发水: 4 瓶 香皂: 10 块 牙刷: 4 把
洗发水: 4 瓶 香皂: 15 块 牙刷: 2 把
洗发水: 4 瓶 香皂: 20 块 牙刷: 0 把
洗发水: 5 瓶 香皂: 0 块 牙刷: 5 把
洗发水: 5 瓶 香皂: 5 块 牙刷: 3 把
洗发水: 5 瓶 香皂: 10 块 牙刷: 1 把
洗发水: 6 瓶 香皂: 0 块 牙刷: 2 把
洗发水: 6 瓶 香皂: 5 块 牙刷: 0 把

进程已结束,退出代码0

6.求两个数的最大公约数和最小公倍数。(提示:公约数一定小于等于两数中的小的那个数,且能同时被两个数整除;公倍数一定大于等于两数中的大数,且是大数的倍数又能被两数中的小数整除)

程序代码:

def common_divisor(n ,m):
    a,b = max(n,m),min(n,m)
    a,b = b,a%b
    while b:
        a,b=b,a%b
    return a
def common_multiple(n,m):
    return n*m//common_divisor(n,m)

print("最小公约数:",common_divisor(5,6))
print("最大公倍数:",common_multiple(5,6))

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue3/06.py
最小公约数: 1
最大公倍数: 30

进程已结束,退出代码0

7.编写程序,求1!+3!+5!+7!+9!。

程序代码1:

def jie(n):
    if n == 0:
        return 1
    else:
        return n*jie(n-1)
a = [1,3,5,7,9]
b = []
for i in a:
    b.append(jie(i))
print(sum(b))

运行结果1:

C:\ProgramData\Anaconda3\python.exe D:/blue3/07.py
368047

进程已结束,退出代码0

程序代码2:

a = [1,3,5,7,9]
b = []
num = 1
for i in a:
    if i < 0:
        print("{}的没有阶乘".format(i))
    elif i == 0:
        print("{}的阶乘为:1".format(i))
        b.append(1)
    else:
        for j in range(1,i+1):
            num *= j
        b.append(num)
        print("{}的阶乘为:".format(i),num)
        num = 1
print(sum(b))

运行结果2:

C:\ProgramData\Anaconda3\python.exe D:/blue3/07.py
1的阶乘为: 1
3的阶乘为: 6
5的阶乘为: 120
7的阶乘为: 5040
9的阶乘为: 362880
368047

进程已结束,退出代码0

程序代码3:

from functools import reduce
a = [1,3,5,7,9]
b = []
for i in a:
    x=reduce(lambda x,y:x*y,range(1,i+1))
    b.append(x)
print(sum(b))

运行结果3:

C:\ProgramData\Anaconda3\python.exe D:/blue3/07.py
368047

进程已结束,退出代码0

程序代码4:

import math
a = [1,3,5,7,9]
b = []
for i in a:
    value = math.factorial(i)
    b.append(value)
print(sum(b))

运行结果4:

C:\ProgramData\Anaconda3\python.exe D:/blue3/07.py
368047

进程已结束,退出代码0

8.编写程序,让用户输入一个整数,如果输入的是正数就输出1,如果输入的是负数就输出-1,否则输出0。

程序代码:

number = int(input("请输入一个数字:"))
if number < 0:
    print("-1")
elif number > 0:
    print("1")
else:
    print("0")

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue3/08.py
请输入一个数字:0
0

进程已结束,退出代码0
C:\ProgramData\Anaconda3\python.exe D:/blue3/08.py
请输入一个数字:1
1

进程已结束,退出代码0
C:\ProgramData\Anaconda3\python.exe D:/blue3/08.py
请输入一个数字:-5
-1

进程已结束,退出代码0

9.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

程序代码:

x = input("请输入一行字符:")
a = 0
b = 0
c = 0
d = 0
for ch in x:
    if ch.islower() or ch.isupper():
        a += 1
        continue
    if ch == " ":
        b += 1
        continue
    if ch.isdigit():
        c += 1
        continue
    else:
        d += 1

print("英文字母{}个".format(a),"空格{}个".format(b),"数字{}个".format(c),"其它字符{}个".format(d))

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue3/09.py
请输入一行字符:wo ai dudu 520 , . ,
英文字母8个 空格6个 数字3个 其它字符3个

进程已结束,退出代码0

10.某百货公司为了促销,采用购物打折的办法。1000元以上者,按九五折优惠;2000元以上者,按九折优惠;3000元以上者,按八五折优惠;5000元以上者,按八折优惠。编写程序,输入购物款数,计算并输出优惠价。

程序代码:

x = int(input("请输入用户的购物款数:"))
if x <= 1000:
    print("不打折!")
    exit(0)
if x > 1000 and x < 2000:
    x *= 0.95
    print("打完折为:",x,"元")
    exit(0)
if x > 2000 and x < 3000:
    x *=0.9
    print("打完折为:",x,"元")
    exit(0)
if x > 3000 and x < 5000:
    x *=0.85
    print("打完折为:",x,"元")
    exit(0)
if x > 5000:
    x *=0.8
    print("打完折为:",x,"元")
    exit(0)

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue3/10.py
请输入用户的购物款数:6000
打完折为: 4800.0 元

进程已结束,退出代码0
  • 9
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值