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

求助:Python中ADN转ARN的数组填充函数失效问题修复

修复ADN转ARN的数组填充及转换功能

问题分析

你的remplir函数无法正确填充数组,核心原因是:你把用户输入的碱基值存在了临时变量a里,但没有将a赋值回数组T的对应索引位置。除此之外还有几个细节问题需要修正:

  • ADN的碱基是A、T、C、G,你误写成了ARN的碱基U,需要修正输入校验的列表
  • 使用numpy数组时,初始化为[0]*n会创建整数类型数组,直接赋值字符串会报错,需要指定字符串类型
  • 主程序中没有调用转换函数conv就直接打印ARN数组,导致输出的是初始的0值

修复后的代码

from numpy import array

def saisie():
    # 输入数组长度并做范围校验
    n = int(input("请输入数组长度:"))
    while not (5 <= n <= 30):
        n = int(input("长度需在5-30之间,请重新输入:"))
    return n

def remplir(T, n): 
    # 填充ADN碱基数组
    for i in range(n):
        a = input("请输入ADN碱基(A/T/C/G):")
        while a not in ["A", "T", "C", "G"]:
            a = input("输入错误,请输入正确的ADN碱基(A/T/C/G):")
        # 将输入值赋值回数组对应位置
        T[i] = a
    return T

def affiche(T, n):
    # 打印数组内容
    for i in range(n):
        print(T[i], end="/")
    print()  # 换行,避免后续内容跟在同一行
    return T

def conv(T, Tarn, n):
    # ADN转ARN:A→U,T→A,C→G,G→C
    for i in range(n):
        base = T[i]
        if base == "A":
            Tarn[i] = "U"
        elif base == "T":
            Tarn[i] = "A"
        elif base == "C":
            Tarn[i] = "G"
        elif base == "G":
            Tarn[i] = "C"
    return Tarn

# 主程序
n = saisie()
# 初始化字符串类型的numpy数组
T = array([""] * n, dtype=str)
Tarn = array([""] * n, dtype=str)
# 填充ADN数组
remplir(T, n)
# 转换为ARN数组
conv(T, Tarn, n)
# 打印ARN结果
affiche(Tarn, n)

关键修复点

  • 填充函数修正:在remplir中添加T[i] = a,将用户输入的碱基值存入数组对应位置
  • 碱基校验修正:把输入校验的列表从["A","U","G","C"]改为["A", "T", "C", "G"],符合ADN的碱基类型
  • 数组类型修正:初始化numpy数组时指定dtype=str,确保可以存储字符串类型的碱基
  • 主程序流程修正:按顺序调用remplir填充ADN→conv转换为ARN→affiche打印结果,保证逻辑完整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:55:27