7-2 jmu-python-组合数 (20分)

博主分享了关于Python组合数计算的代码,指出原始代码在用户输入方面的不足,并提供了自己改进的版本。然而,改进后的程序在PTA平台验证时遇到'非零返回'错误,博主对于问题所在感到困惑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7-2 jmu-python-组合数 (20分)

 

 

def Factorial(x):
    s = 1
    for i in range(1,x+1):
        s *= i
    return s

try:
    m, n = map(int,input().split())
except:
    print('请输入数值')
    exit(0)
if m < 0:
    print('不能负数')
    exit(0)
else:
    n_1 = Factorial(n)
    m_1 = Factorial(m)
    n_m = Factorial(n-m)
    s = n_1 / (m_1*n_m)
    print("result={:.2f}".format(s))

or 

def Factorial(n):
    s = 1
    for i in range(1,n+1):
        s = s * i
    return s

def cal(m,n):
    n_1 = Factorial(n)
    m_1 = Factorial(m)
    n_m = Factorial(n-m)
    return n_1 / (m_1 * n_m)

def judge(m,n):
    try:
        m, n = int(m), int(n)
        return True
    except:
        return False

m,n = input().split()
if judge(m,n):
   
### JMU Python 习题 7-2 逆序输出实现方法 对于题目要求的逆序输出字符串中的所有元素,可以采用多种方式来完成这一功能。以下是基于引用内容以及标准编程实践的一种解决方案。 #### 方法描述 通过输入一个由空格隔的字符串,将其转换为列表形式,随后对该列表进行反转操作并按指定格式输出结果。具体实现如下: ```python # 获取用户输入并将字符串割成列表 s = input().strip().split() # 原始顺序输出 print(' '.join(s)) # 反转后的顺序输出 reversed_s = s[::-1] for i, word in enumerate(reversed_s): if i == len(reversed_s) - 1: print(word) # 最后一个单词不加空格 else: print(word, end=' ') # 中间部以单个空格隔 ``` 上述代码实现了两个主要目标: 1. **原始顺序输出**:利用 `join` 函数将列表重新组合为字符串[^3]。 2. **逆序输出**:通过对列表切片操作 `[::-1]` 来获取反向排列的结果,并逐一打印每个元素,确保最后一个元素之后无多余空格。 --- #### 测试案例析 假设输入为 `"a b c e f gh"`,则执行过程如下: 1. 用户输入被解析为列表 `['a', 'b', 'c', 'e', 'f', 'gh']`。 2. 使用 `' '.join(s)` 将其拼接回字符串 `"a b c e f gh"` 并输出。 3. 对列表应用切片 `[::−1]` 得到反转版本 `['gh', 'f', 'e', 'c', 'b', 'a']`。 4. 遍历该反转列表逐项打印,最终得到预期输出。 --- #### 关键点说明 - 利用 `input()` 和 `split()` 组合快速处理多词输入数据。 - 运用列表切片技术简化复杂逻辑,提升代码可读性和效率。 - 特别关注最后一位字符后面的空格问题,在循环结构中加以区处理。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值