Hola:
Ver ejercicio... (http://www.subeimagenes.com/img/hex-c-6824.jpg)
Por lo que entiendo:
- Leer 10 números enteros positivos.
-Si detecta algún número negativo lo indicamos con un mensaje print y permitir que vuelva a empezar de nuevo.
- En caso de que se hayan introducidos los 10 números positivos el programa se acaba.
Lo he intentado hacer de esta menera y como que no.
lista = [] # Lista vacía.
numero = int(raw_input('Dame un número: '))
while numero >= 0:
for i in range(10):
numero = int(raw_input('Dame un número: '))
lista.append(numero)
if i == 10:
print 'Llegó a 10 números.'
Hola:
En C# se hace así y lo intentaré pasarlo a Python 2.7.
static void Main(string[] args)
{
string frase = "Una frase formada con palabras. Otra frese con otras palabras.";
string[] palabras = frase.Split(' ');
Dictionary<string, int> dic = new Dictionary<string, int>();
foreach (string item in palabras)
{
if (dic.ContainsKey(item))
dic[item]++;
else
dic.Add(item, 1);
}
//muestro la lista de resultados
Console.WriteLine("Lista palabras sin repeticion:");
foreach (KeyValuePair<string, int> item in dic)
{
if(item.Value == 1)
Console.WriteLine(item);
}
}
Me imagino que en Python será el código más cortito...
Saludo.
:)
¿En este ejercicio parece complicado?
:)
Te he dicho ya que tienes problemas de lógica?
Has probado visualizar los temas en papel?
De hecho, incluso el código anterior es mejorable :-\, pero como es que puedes hacerlo en Sharp y no en python? :huh:
El ejercicio no tiene nada de difícil :-\
Saludos
No lo hice lo de C#, lo encontré así. jejejeje.
¿Tengo problemas de lógica o algoritmo?
Citar- Leer 10 números enteros positivos.
-Si detecta algún número negativo lo indicamos con un mensaje print y permitir que vuelva a empezar de nuevo.
- En caso de que se hayan introducidos los 10 números positivos el programa se acaba.
Ambos :xD
No debes de leer los 10 números de una, lees números hasta tener 10, si al ingresar alguno es negativo, lo vuelves a pedir.
Pides número
Número menor a cero? Si, pides otra vez. No, lo agregas a una lista
Cuando la lista tenga 10 números paras.
Saludos
Casi lo logro, aún así me queda investigar.
lista = [] # Lista vacía.
numero = int(raw_input('Dame un número: '))
final = 0
while numero >= 0:
for i in range(11):
numero = int(raw_input('Dame un número: '))
lista.append(numero)
# print i
if i >= 10:
print 'Llegó a 10 números.'
if numero <0:
print 'Haz introducido un número negativo'
Pista, lo tienes mal encarado :xD
lista = []
while len(lista)<10:
Saludos :D
Ahora si. Por fin y gracias.
lista = [] # Lista vacía.
numero = int(raw_input('Dame un número: '))
final = 0
while numero >= 0:
for i in range(11):
numero = int(raw_input('Dame un número: '))
lista.append(numero)
# print i
if i >= 10:
print 'Llegó a 10 números.'
if numero <0:
print 'Haz introducido un número negativo'
Edito:Viendo bien, no me salió lo que pide. El resultado me dió este:
CitarDame un número: 0
Dame un número: 1
Dame un número: 2
Dame un número: 3
Dame un número: 4
Dame un número: 5
Dame un número: 6
Dame un número: 7
Dame un número: 8
Dame un número: 9
Dame un número: 10
Dame un número: 11
Llegó a 10 números.
Dame un número: 0
Dame un número: 1
Dame un número: -2
Haz introducido un número negativo
Dame un número:
Me cuenta hasta 11 y cuando dectecta que es un número negativo, el bucle sigue.
Quizás sirva algo como esto,
# @Listas y numeros negativos
# @Shell Root
# @2010
sCount = 0
sNumber = 0
lista = []
while(sCount != 10):
sNumber = int(raw_input("Enter number: "))
if(sNumber >= 0):
lista.append(sNumber)
else:
print "Negative number"
break
sCount += 1
Resultado,
alex@shellroot:~/Escritorio$ python PoC.py
Enter number: 1
Enter number: 2
Enter number: 3
Enter number: 4
Enter number: 5
Enter number: 6
Enter number: 7
Enter number: 8
Enter number: 9
Enter number: 10
alex@shellroot:~/Escritorio$ python PoC.py
Enter number: 10
Enter number: 1
Enter number: 2
Enter number: 3
Enter number: 4
Enter number: -1
Negative number
alex@shellroot:~/Escritorio$
Note: When you complete the application, display list!
lista = []
for i in range(10):
while True:
n = input('Ingresa valor: ')
if n < 0:
print('El valor no puede ser negativo')
else:
lista.append(n)
break
print lista
Saludos
@Novlucker,
Sólo por curiosidad, por qué empieza en -1. Aquí,
lista = []
for i in range(10):
n = -1
while True:
n = input('Ingresa valor: ')
if n < 0:
print('El valor no puede ser negativo')
else:
break
lista.append(n)
print lista
Por una pifia de mi parte, es que antes había puesto otra cosa, no se por que no había puesto el append dentro del if, así que para que la variable n estuviese alcanzable donde lo hacía, necesitaba tenerla inicializda :xD
Saludos
¿Estás seguro que es lo que pide el ejercicio?
Fíjate el resultado.
Ingresa valor: 0
Ingresa valor: 1
Ingresa valor: 2
Ingresa valor: -3
El valor no puede ser negativo
Ingresa valor: 0
Ingresa valor: 1
Ingresa valor: 2
Ingresa valor: 3
Ingresa valor: 4
Ingresa valor: 5
Ingresa valor: 6
[0, 1, 2, 0, 1, 2, 3, 4, 5, 6]
Es qué es tú ejercicio, no de nosotros, así que ahora te toca acomodarlo a tus necesidades.
Lo estoy haciendo honorable Shell Root.
Cita de: Meta en 16 Noviembre 2010, 02:31 AM¿Estás seguro que es lo que pide el ejercicio?
Sí se NOTA! :silbar:
Investigando el borrado completo de la lista para que empiece desde cero. Por ahora estoy usando uno a uno el
del lista [1]
Lo puedo hacer uno a uno. Deja ver como lo hago a la vez.
for j in lista:
if j < 0:
del i
Edito:
lista = [] # Lista vacía.
for i in range(10):
while True:
n = input('Ingresa valor: ') # Pide un valor entero en n.
if n < 0: # ¿El valor n en menor que ?
del lista[0]
del lista[1]
del lista[2]
del lista[3]
del lista[4]
del lista[5]
del lista[6]
del lista[7]
del lista[8]
del lista[9]
print('El valor no puede ser negativo')
else: #Entonces.
lista.append(n) # Añade en la lista el valor n actual.
break # Rompe el bucle.
print lista # Muestra en pantalla los valores de la lista introducido.
Me da este resultado. Parece que no le va los negativos.
Citar
Ingresa valor: 1
Ingresa valor: 2
Ingresa valor: 3
Ingresa valor: -4
Traceback (most recent call last):
del lista[2]
IndexError: list assignment index out of range
Se que es una forma chapuza de borrar la lista completa para empezar desde cero. Ya lo haré con for in, antes, debo entender como se hace el borrado.
Si, estoy seguro de que es lo que pide
Cuál es el error que ves tu en la solución que has puesto antes?
Ingresa valor: 0
Ingresa valor: 1
Ingresa valor: 2
Ingresa valor: -3
El valor no puede ser negativo
Ingresa valor: 0
Ingresa valor: 1
Ingresa valor: 2
Ingresa valor: 3
Ingresa valor: 4
Ingresa valor: 5
Ingresa valor: 6
[0, 1, 2, 0, 1, 2, 3, 4, 5, 6]
Que tiene de malo?
Yo ahí veo que pide 10 valores, y al final tienes 10 valores, y si uno de los que ingresas es negativo, te lo vuelve a pedir :rolleyes:
Quizás se entiende de 2 formas, por lo menos yo la entiendo así.
Pedir números, al completar 10 números POSITIVOS imprimirlos, si se ingresa uno negativo, vuelve a pedir los números. Yo diría que se empezará otra vez desde 0, y por cierto, así fue que lo hice. XD
Eso es lo que quiero hacer, empezar desde cero.
A lo mejor como dices, está bien y no tiene nada de malo el resultado.
Todos han aportado, yo tambien
así lo haría yo
#! /usr/bin/python
#-*- coding: utf-8 -*-
lista=[]
contador=0
while contador<10:
entrada=int(raw_input("Digite un número %d: " %(contador+1)))
if entrada<0: print "Sólo números positivos!"
else:
lista.append(entrada)
contador+=1
print "\nya son 10 números"
print lista
Cita de: Shell Root en 16 Noviembre 2010, 04:25 AM
Pedir números, al completar 10 números POSITIVOS imprimirlos, si se ingresa uno negativo, vuelve a pedir los números. Yo diría que se empezará otra vez desde 0, y por cierto, así fue que lo hice. XD
Como hacer las cosas de la manera difícil y sobrevivir en el intento :xD
while True:
lista = []
for i in range(10):
lista.append(input('Ingresa numero: '))
if True in [i<1 for i in lista]:
print 'La lista contiene un negativo'
else:
print lista
break
Saludos