Prenons une liste (list = []). Vous pouvez exécuter les commandes suivantes:
[6, 5, 10] [1, 5, 9, 10] [9, 5, 1]
Initialisez votre liste et lisez la valeur de suivi de lignes de commandes où chaque commande sera des types listés ci-dessus. Parcourez chaque commande dans l'ordre et effectuez l'opération correspondante sur votre liste.
Exemple d'entrée:
import sys
if __name__ == '__main__':
N = int(input())
my_list = []
inputs = []
for line in sys.stdin:
inputs.append(line)
for item in inputs:
if item[0:5] == 'print':
print(my_list)
elif item[0:2] == 'in':
inserts = [s for s in item.split()][1:3]
inserts = list(map(int, inserts))
my_list.insert(inserts[0], inserts[1])
elif item[0:3] == 'rem':
inserts = list(map(int, [s for s in item.split()][1]))
my_list.remove(inserts[0])
elif item[0:2] == 'ap':
inserts = list(map(int, [s for s in item.split()][1]))
my_list.append(inserts[0])
elif item[0:4] == 'sort':
my_list.sort()
elif item[0:3] == 'pop':
my_list.pop()
elif item[0:7] == 'reverse':
my_list.reverse()
Mon code:
12 insert 0 5 insert 1 10 insert 0 6 print remove 6 append 9 append 1 sort print pop reverse print
Je ne sais pas pourquoi mon code n'est pas approuvé lors de la soumission. Dans ce cas de test qu'ils ont fourni, mon code passe. Le résultat attendu est le suivant:
insert i e: Insert integer e at position . print: Print the list. remove e: Delete the first occurrence of integer e. append e: Insert integer e at the end of the list. sort: Sort the list. pop: Pop the last element from the list. reverse: Reverse the list.
Merci beaucoup pour l'aide!
7 Réponses :
Votre problème est que votre code d'ajout a un bogue lorsque le numéro à ajouter a plus d'un chiffre. Dans votre code ici
inserts = list(map(int, [s for s in item.split()][1])) my_list.append(inserts[0])
par exemple si la commande "item" était "append 12", [s for s in item.split ()] [1] serait la chaîne "12", donc list (map (int, [s pour s dans item.split ()] [1])) mappe chaque caractère de cette chaîne à un entier, donnant vous [1, 2] plutôt que [12], et donc ma_liste.append (inserts [0]) ajouteriez le numéro 1 au lieu de 12. Alors corrigez cela et vous résoudrez votre problème.
Merci beaucoup pour cela! Cela a résolu mon problème. J'apprécie l'aide.
Le découpage des chaînes n'est pas une bonne idée. En outre, vous devez obtenir les entrées utilisateur N fois. Vous pouvez donc modifier votre solution comme ci-dessous:
if __name__ == '__main__':
N = int(input())
the_list = list()
for _ in range(N):
query = input().split()
if query[0] == "print":
print(the_list)
elif query[0] == "insert":
the_list.insert(int(query[1]), int(query[2]))
elif query[0] == "remove":
the_list.remove(int(query[1]))
elif query[0] == "append":
the_list.append(int(query[1]))
elif query[0] == "sort":
the_list = sorted(the_list)
elif query[0] == "pop":
the_list.pop()
elif query[0] == "reverse":
the_list.reverse()
Pourquoi faisons-nous cela "query = input (). Split ()"? J'ai besoin de comprendre son but
@Rahul car nous devons obtenir le format approprié de l'entrée de l'utilisateur. N'oubliez pas que l'entrée utilisateur est une chaîne, mais nous avons besoin du premier mot sous forme de chaîne, mais les autres doivent être int pour résoudre le problème.
if __name__ == '__main__':
N = int(input())
m=list()
for i in range(N):
method,*l=input().split()
k=list(map(int,l))
if len(k)==2:
q=[k[0]]
w=[k[1]]
elif len(k)==1:
q=[k[0]]
if method =='insert':
m.insert(q[0],w[0])
elif method == 'append':
m.append(q[0])
elif method == 'remove':
m.remove(q[0])
elif method =='print':
print(m)
elif method == 'reverse':
m.reverse()
elif method =='pop':
m.pop()
elif method == 'sort':
m.sort()
Bien que ce code puisse résoudre la question, y compris une explication expliquant comment et pourquoi cela résout le problème aiderait vraiment à améliorer la qualité de votre message, et entraînera probablement plus de votes à la hausse. N'oubliez pas que vous répondez à la question des lecteurs à l'avenir, pas seulement à la personne qui la pose maintenant. Veuillez modifier votre réponse pour ajouter des explications et donner une indication des limitations et hypothèses applicables.
def execute(lst, cmd, *args):
if cmd == 'insert':
lst.insert(int(args[0]), int(args[1]))
elif cmd == 'print':
print(lst)
elif cmd == 'remove':
lst.remove(int(args[0]))
elif cmd == 'append':
lst.append(int(args[0]))
elif cmd == 'sort':
lst.sort()
elif cmd == 'reverse':
lst.reverse()
elif cmd == 'pop':
lst.pop()
else:
print("Command not recognized!")
lst = []
for _ in range(int(input())):
execute(lst, *input().split())
if __name__ == '__main__':
N = int(input())
reqarr = []
for i in range(0,N):
inplist = (input().split())
if(inplist[0] == "insert" ):
reqarr.insert(int(inplist[1]),int(inplist[2]))
elif(inplist[0] == "print"):
print(reqarr)
elif(inplist[0] == "remove"):
reqarr.remove(int(inplist[1]))
elif(inplist[0] == "append"):
reqarr.append(int(inplist[1]))
elif(inplist[0]=="sort"):
reqarr.sort()
elif(inplist[0]=="reverse"):
reqarr.reverse()
elif(inplist[0] == "pop"):
reqarr.pop()
Bienvenue à SO. Bien que nous vous remercions pour votre réponse, il serait préférable qu'elle apporte une valeur supplémentaire en plus des autres réponses. Dans ce cas, votre réponse n'apporte pas de valeur supplémentaire, car hevalhazalkurt a déjà publié cette solution. Si une réponse précédente vous a été utile, vous devriez la voter une fois que vous avez une réputation suffisante.
D'accord, j'essaierai de le faire à partir des prochaines contributions
def operation(last_value1,operation_name,*number):
list_number = last_value1
if operation_name.lower() == 'insert':
list_number.insert(int(number[0]),int(number[1]))
elif operation_name.lower() == 'remove':
list_number.remove(int(number[0]))
elif operation_name.lower() == 'append':
list_number.append(int(number[0]))
elif operation_name.lower() == 'sort':
list_number = sorted(list_number)
elif operation_name.lower() == 'print':
print(list_number)
elif operation_name.lower() == 'pop':
list_number.pop()
elif operation_name.lower() == 'reverse':
list_number= list_number[::-1]
return list_number
N = int(input())
last_value = []
for count in range(0,N):
command_input = input("Please enter the command with number seperated by space")
command_input = command_input.split()
if len(command_input) == 3:
last_value = operation(last_value,command_input[0],command_input[1],command_input[2])
elif len(command_input) == 2:
last_value= operation(last_value,command_input[0],command_input[1])
else:
last_value = operation(last_value,command_input[0])
Veuillez ne pas publier uniquement le code comme réponse, mais également expliquer ce que fait votre code et comment il résout le problème de la question. Les réponses avec une explication sont généralement plus utiles et de meilleure qualité, et sont plus susceptibles d'attirer des votes positifs.
*if __name__ == '__main__':
N = int(input())
the_list = list()
for cmd in range(N):
input_cmd = input().split()
if input_cmd[0] == 'print':
print(the_list)
elif input_cmd[0] == 'insert':
the_list.insert(int(input_cmd[1]), int(input_cmd[2]))
elif input_cmd[0] == 'remove':
the_list.remove(int(input_cmd[1]))
elif input_cmd[0] == 'append':
the_list.append(int(input_cmd[1]))
elif input_cmd[0] == 'sort':
the_list = sorted(the_list)
elif input_cmd[0] == 'pop':
the_list.pop()
elif input_cmd[0] == 'reverse':
the_list.reverse()*
Bien que les réponses au code seulement puissent aider dans un cas spécifique, veuillez fournir des détails sur le pourquoi et le comment cela fonctionne, afin que des problèmes similaires puissent être résolus.
Vous lisez
Ndepuisstdinmais vous ne l'utilisez jamais. Est-il possible que cela entraîne des problèmes lorsque le nombre de lignes dans le flux d'entrée est différent deN? (notez que je n'ai pas lu les spécifications du problème)Honnêtement, je ne sais pas si cela compte. D'après ce que je peux voir, cela ne devrait pas avoir d'impact sur le résultat, n'est-ce pas? Le premier nombre indique uniquement le nombre de commandes qu'il pourrait y avoir.