第二章Python语言基础

1. 编写程序,输人3个整数x,y,z,并把这3个数由小到大输出。

# 输入3个整数
x = int(input("请输入第一个整数: "))
y = int(input("请输入第二个整数: "))
z = int(input("请输入第三个整数: "))

# 创建一个包含这3个整数的列表
a = [x, y, z]

# 使用sorted函数对列表进行排序
sorted_a = sorted(a)

# 输出排序后的结果
print("从小到大排序后的结果为:", sorted_a)

 

2.编程实现奇偶归一猜想:对于一个正整数n,如果它是奇数,则对它乘以3再加1;如果它是偶数,则对它除以2。如此循环,最终都能够得到1。例如,n=6,则序列为6 3 10 5 16 8 4 2 1。

def a(n):                                #自定义的函数,它接受一个正整数 `n` 作为参数,然后生成奇偶归一猜想的序列,并返回一个包含该序列的列表。
    c = [n]                              #在函数内部,我们创建一个名为 `c` 的列表,用来存储奇偶归一猜想的序列,初始时将 `n` 添加到列表中。
    
    while n != 1:                        #使用一个 `while` 循环,当 `n` 不等于1时,继续进行奇偶归一猜想。
        if n % 2 == 0:                   #检查 `n` 是否为偶数,通过取余运算 (`n % 2`) 来判断。如果是偶数,执行下面的语句。
            n = n // 2                   #如果 `n` 是偶数,将 `n` 除以2,即整数除法,以继续下一个循环。
        else:                            #如果 `n` 是奇数时,执行下面的语句。
            n = 3 * n + 1                #如果 `n` 是奇数,将 `n` 乘以3再加1,以继续下一个循环。
        c.append(n)                      #在每次循环结束时,将当前的 `n` 添加到 `c` 列表中,记录当前的值
    
    return c                             #当 `n` 最终等于1时,循环结束,函数返回包含奇偶归一猜想序列的 `c` 列表。

# 输入一个正整数
n = int(input("请输入一个正整数: "))

if n <= 0:
    print("请输入一个正整数。")            #如果输入的数小于等于0,则输出提示信息,要求用户输入一个正整数。避免报错!
else:
    b = a(n)                             #调用 `a` 函数生成奇偶归一猜想的序列,并将结果打印出来。
    print("奇偶归一猜想序列为:", b)

 

3.编写程序,输人一个考试分数,并按照“优秀”[90~100]、“良好”[80~90)、“中等”[70~80)、“及格”[60~70) 和“不及格” [0~60) 判定等级后输出。

# 输入考试分数
a = float(input("请输入考试分数: "))

# 判定等级
if a >= 90 and a <= 100:
    grade = "优秀"
elif a >= 80 and a < 90:
    grade = "良好"
elif a >= 70 and a < 80:
    grade = "中等"
elif a >= 60 and a < 70:
    grade = "及格"
elif a >= 0 and a < 60:
    grade = "不及格"
else:
    grade = "无效输入"

# 输出等级
if grade != "无效输入":
    print(f"{grade}")
else:
    print("输入的分数无效,请输入0到100之间的分数。")

 

4.编写程序,使一个整数的各位数字逆序排列后输出。例如,给定整数123456,经处理后得到整数654321(注意数据类型应为整数)。

# 输入一个整数
a = int(input("请输入一个整数: "))

# 将整数转换为字符串以便反转各位数字
a_str = str(a)

# 反转字符串
reversed_str = a_str[::-1]

# 将反转后的字符串转换回整数
reversed_a = int(reversed_str)

# 输出反转后的整数
print("逆序排列后的整数是:", reversed_a)

 

5.圆周率可以用公式 π=4x(1-1/3+1/5-1/7+1/9-...+...) 近似计算。编写程序,利用该公式计算圆周率,输出不同求和项数的值及计算结果,展示其精确性。

def a(n):                                        #定义一个名为 a 的函数,它接受一个参数 n,表示要计算的项数。
    b = 0                                        #创建一个变量 b,用于存储圆周率的近似值,并将其初始化为0。
    sign = 1                                     #创建一个变量 sign,用于追踪每一项的正负号。开始时,它被初始化为1,表示正数。

    for i in range(1, n * 2, 2):                 #使用 for 循环迭代计算每一项的值。i从1开始,每次增加2,以便生成1, 3, 5, 7等奇数项
        b += sign * (4 / i)                      #根据公式计算每一项的值,然后将其加到 b上。这里 sign 控制正负号,而 (4 / i) 表示当前项的值
        sign *= -1                               #在每次迭代结束时,切换正负号,以便在奇数项和偶数项之间交替。

    return b                                     #返回计算出的近似圆周率值。

# 输入要计算的项数
n = int(input("输入要计算的项数: "))

if n <= 0:
    print("项数必须为正整数。")
else:
    b = a(n)
    print(f"{n} 项的近似圆周率值为: {b}")

 

6.酒厂有瓶盖换啤酒活动。3个瓶盖可以换一瓶啤酒。编写程序,计算如果一开始买了n瓶啤酒,那么这么一直换下去,最终能喝到几瓶啤酒?例如,初始瓶数n为100,则程序应该输出149;初始瓶数n为101,程序应该输出151。

def a(n):
    total = n
    while n >= 3:
        b = n // 3
        total += b
        n = b + (n % 3)
    return total

n = int(input("请输入初始瓶数:"))
result = a(n)
print("最终能喝到的啤酒瓶数为:", result)

 

7.编写程序,输出三角形的“九九乘法表”。

def a(n):
    for i in range(1, n + 1):
        for j in range(1, i + 1):
            product = i * j
            print(f"{j} x {i} = {product}\t", end="")
        print()

n = 9  # 你可以根据需要更改n来控制输出的行数
a(n)

 

8.编写程序,输人多个正整数,以-1表示结束,输出这些正整数之和。例如:输人第1个数:1 ; 输人第2个数:2 ; 输入第3个数:3 ; 输入第4个数:-1 ; 正整数之和为:6

total = 0

while True:
    number = int(input("请输入一个正整数(输入-1结束): "))
    if number == -1:
        break
    if number > 0:
        total += number

print("正整数之和为:", total)

 

9.自幂数是指一个n位数(n>=3),它的每个位上的数字的n次幂之和等于它本身 (例如1**3+5**3+3**3=153)。编写程序,求出所有3位、4位和5位数的自幂数。

# 定义一个函数,判断一个数是否是自幂数
def is_narcissistic(num):
  # 将数字转换为字符串
  s = str(num)
  # 获取数字的位数
  n = len(s)
  # 初始化数字的各位数字的n次幂之和
  sum = 0
  # 遍历字符串中的每个字符
  for c in s:
    # 将字符转换为数字
    d = int(c)
    # 计算数字的n次幂,并累加到sum中
    sum += d ** n
  # 判断sum是否等于num,如果是,返回True,否则返回False
  return sum == num

# 定义一个函数,输出所有m位数的自幂数
def print_narcissistic(m):
  # 计算m位数的最小值和最大值
  min = 10 ** (m - 1)
  max = 10 ** m - 1
  # 遍历m位数的所有可能值
  for i in range(min, max + 1):
    # 判断i是否是自幂数,如果是,打印i
    if is_narcissistic(i):
      print(i)

# 输出所有3位、4位和5位数的自幂数
print("3位数的自幂数有:")
print_narcissistic(3)
print("4位数的自幂数有:")
print_narcissistic(4)
print("5位数的自幂数有:")
print_narcissistic(5)

 

10.编写程序,产生MyPyLib扩展库,在其中实现可以计算给定数值的平方数的函数: MyPyLib.sqr(val)。编写程序,对该扩展库的sqr()函数功能进行测试。

要创建一个名为MyPyLib的Python扩展库,并在其中实现一个计算给定数值的平方数的函数sqr(val),你需要遵循以下步骤:

1. 创建一个名为MyPyLib的文件夹,用于存储你的扩展库。

2. 在MyPyLib文件夹中,创建一个名为`__init__.py`的空文件,以便Python将该文件夹识别为一个包。

3. 在MyPyLib文件夹中创建一个名为`mylib.py`的Python模块,并在其中实现sqr函数。你的`mylib.py`文件可以如下所示:

def sqr(val):
    return val ** 2

4. 确保`mylib.py`文件位于MyPyLib文件夹中。

5. 现在,你可以在另一个Python脚本中测试你的MyPyLib扩展库。创建一个名为`test_mypylib.py`的脚本,并在其中导入并使用MyPyLib中的sqr函数。示例测试脚本如下:

from MyPyLib import mylib

value = 5
result = mylib.sqr(value)
print(f"The square of {value} is {result}")

6. 保存`test_mypylib.py`脚本,并确保它与MyPyLib文件夹位于同一目录中。

7. 确保你已经将Python包含在你的环境中。

8. 运行`test_mypylib.py`脚本,它将导入MyPyLib扩展库并测试sqr函数。

这样,你就创建了一个名为MyPyLib的扩展库,并测试了其中的sqr函数。在实际应用中,你可以将MyPyLib文件夹部署到Python的`site-packages`目录中,以便在其他项目中使用它。

 

11.形如 1/1 +1/2 +1/3 +1/4 +...称为调和级数。该级数是缓慢发散的,例如其前 83 项之和才仅超过5.0。编写程序,计算级数中要加多少项,才能使得级数达到或超过15.0

a = 15.0
b = 0.0
n = 0

while b < a:
    n += 1
    b += 1 / n

print("需要加入前", n, "项才能使级数达到或超过", a)

 

12.编写程序,在给定的一个句子s中,查找其中给定字符串c,并输出以c开始,长度为1的各字符串。
例如:对于句子“If your life feels like it is lacking the power that you want and the motivation that you need, sometimes all you have to do is shift your point of view. ”
当查找的特定字符串为"yo",长度为7时,则输出结果如下:
第1处,位置 3:your li ;
第2处位置53;you wan ;
第3处,位置86;you nee ;
第4处位置110:you hav ;
第5处位置134:your po

s = "If your life feels like it is lacking the power that you want and the motivation that you need, sometimes all you have to do is shift your point of view."
c = "yo"

start = 0
index = 0

while True:
    index = s.find(c, start)
    if index == -1:
        break
    a = s[index - 1:index + 7]  # 获取以c开始,长度为7的子字符串
    print(f"第{start + 1}处,位置 {index} : {a}")
    start = index + 1

 

 

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

M_Ava

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

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

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

打赏作者

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

抵扣说明:

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

余额充值