You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python字符串遍历与CoinStar硬币金额计算函数实现问题

编写CoinStar函数计算硬币总金额

需求说明

编写名为CoinStar的Python函数,满足以下要求:

  • 函数接收一个字符串参数,该字符串仅允许包含p、n、d、q(大小写均可)
  • 各字符对应的美元金额:
    • p或P:0.01(便士)
    • n或N:0.05(镍币)
    • d或D:0.10(一角硬币)
    • q或Q:0.25(两角五分硬币)
  • 函数返回总金额的浮点数;若字符串包含上述以外的非法字符,返回-1

待修正代码

def coinstar(yo):
    for i in (0,len(yo)):
        ye=0
        if i == 'p' or i =='P':
            ye + 0.01
        if i == 'n' or i =='N':
            ye+ 0.05
        if i == 'd' or i == 'D':
            ye + 0.10
        if i == 'q' or i == 'Q':
            ye+ 0.25
    return ye
print(coinstar('qdnp'))

原代码问题分析

  • 循环逻辑错误:for i in (0,len(yo))仅会循环0和字符串长度两个数值,无法遍历字符串的每个字符
  • 变量初始化位置错误:ye=0放在循环内部,每次循环都会重置累计金额,无法实现累加
  • 累加操作错误:ye + 0.01仅做计算但未赋值给ye,需要用ye += 0.01完成累加
  • 缺少非法字符校验:未判断字符是否合法,遇到非法字符无法返回-1

修正后的代码

def CoinStar(yo):
    total = 0.0
    valid_chars = {'p', 'P', 'n', 'N', 'd', 'D', 'q', 'Q'}
    for char in yo:
        # 遇到非法字符直接返回-1
        if char not in valid_chars:
            return -1
        # 统一转小写判断,简化逻辑
        match char.lower():
            case 'p':
                total += 0.01
            case 'n':
                total += 0.05
            case 'd':
                total += 0.10
            case 'q':
                total += 0.25
    return total

# 测试示例
print(CoinStar('pppp'))       # 输出 0.04
print(CoinStar('QdNnpqDqq'))  # 输出 1.31
print(CoinStar('dpnx'))       # 输出 -1

示例验证

  • CoinStar('pppp') → 0.04
  • CoinStar('QdNnpqDqq') → 1.31
  • CoinStar('dpnx') → -1

内容的提问来源于stack exchange,提问作者Mattx21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:55:31