compare user's input in a python list - python-3.x

The question is related to Python
I have this list:
a=[1,1,2,3,5,8,13,21,34,55,89]
# I ask the user to enter a number
user_number = input("Enter a number")
What I need is to display the numbers of the list that are smaller than than user_input
Any hint please?

You can for loop through the list.
for numbers in a:
if number < int(user_input)
print(number)

Related

Sort function in Python is bugged?

I know this doubt looks quite easy but i just cant get my head to wrap around it.
I was just fooling around with python sorting, when i noticed this.
If I gave in the input as 21 ,8, 4. The output i would receive would be 21, 4,8. Not 4,8,21. What i am assuming is that python is only taking the first digit and comparing, but that is not what i want. How do i fix this problem?
lst=list()
i=0
while i < 3:
number=input("Give me a number: \n")
lst.append(number)
i=i+1
print("\n")
lst.sort()
print("The list of ordered numbers are:")
for j in lst:
print(j)
Terminal output
The only mistake you are making is by taking input as string,
The line number=input("Give me a number: \n") should be number=int(input("Give me a number: \n"))
If you use input() only then it takes every input as string, you need to convert that to int in your case, using int()
The sort function works on both integers and strings.
But if you want it to be implemented for the integers, you need to accept the input as integers for which you can use something like this.
lst=list()
i=0
while i < 3:
number=int(input("Give me a number: \n"))
lst.append(number)
i=i+1
print("\n")
lst.sort()
print("The list of ordered numbers are:")
for j in lst:
print(j)

Loop won't finish...Poor indentation?

I am new to python and Jupyter Notebook
The objective of the code I am writing is to request the user to introduce 10 different integers. The program is supposed to return the highest odd number introduced previously by the user.
My code is as followws:
i=1
c=1
y=1
while i<=10:
c=int(input('Enter an integer number: '))
if c%2==0:
print('The number is even')
elif c> y
y=c
print('y')
i=i+1
My loop is running over and over again, and I don't get a solution.
I guess the code is well written. It must be a slight detail I am not seeing.
Any help would be much appreciated!
You have elif c > y, you should just need to add a colon there so it's elif c > y:
Yup.
i=1
c=1
y=1
while i<=10:
c=int(input('Enter an integer number: ')) # This line was off
if c%2==0:
print('The number is even')
elif c> y: # Need also ':'
y=c
print('y')
i=i+1
You can right this in a much compact fashion like so.
Start by asking for 10 numbers in a single line, separated by a space. Then split the string by , into a list of numbers and exit the code if exactly 10 numbers are not provided.
numbers_str = input("Input 10 integers separated by a comma(,) >>> ")
numbers = [int(number.strip()) for number in numbers_str.split(',')]
if len(numbers) != 10:
print("You didn't enter 10 numbers! try again")
exit()
A bad run of the code above might be
Input 10 integers separated by a comma(,) >>> 1,2,3,4
You didn't enter 10 numbers! try again
Assuming 10 integers are provided, loop through the elements, considering only odd numbers and updating highest odd number as you go.
largest = None
for number in numbers:
if number % 2 != 0 and (not largest or number > largest):
largest = number
Finally, check if the largest number is None, which means we didn't have any odd numbers, so provide the user that information, otherwise display the largest odd number
if largest is None:
print("You didn't enter any odd numbers")
else:
print("Your largest odd number was:", largest)
Possible outputs are
Input 10 integers separated by a comma(,) >>> 1,2,3,4,5,6,7,8,9,10
Your largest odd number was: 9
Input 10 integers separated by a comma(,) >>> 2,4,6,8,2,4,6,8,2,4
You didn't enter any odd numbers

finding largest and smallest number in python

I am very new to programming, please advise me if my code is correct.
I am trying to write a program that repeatedly prompts a user for integer numbers until the user enters 'done'. Once 'done' is entered, print out the largest and smallest of the numbers. If the user enters anything other than a valid number catch it with a try/except and put out an appropriate message and ignore the number.
largest = None
smallest = None
while True:
num = input("Enter a number: ")
if num == 'done':
break
try:
fnum = float(num)
except:
print("Invalid input")
continue
lst = []
numbers = int(input('How many numbers: '))
for n in range(numbers):
lst.append(num)
print("Maximum element in the list is :", max(lst), "\nMinimum element in the list is :", min(lst))
Your code is almost correct, there are just a couple things you need to change:
lst = []
while True:
user_input = input('Enter a number: ')
if user_input == 'done':
break
try:
lst.append(int(user_input))
except ValueError:
print('Invalid input')
if lst:
print('max: %d\nmin: %d' % (max(lst), min(lst)))
Also, since you said you're new to programming, I'll explain what I did, and why.
First, there's no need to set largest and smallest to None at the beginning. I actually never even put those values in variables because we only need them to print them out.
All your code is then identical up to the try/except block. Here, I try to convert the user input into an integer and append it to the list all at once. If any of this fails, print Invalid input. My except section is a little different: it says except ValueError. This means "only run the following code if a ValueError occurs". It is always a good idea to be specific when catching errors because except by itself will catch all errors, including ones we don't expect and will want to see if something goes wrong.
We do not want to use a continue here because continue means "skip the rest of the code and continue to the next loop iteration". We don't want to skip anything here.
Now let's talk about this block of code:
numbers = int(input('How many numbers: '))
for n in range(numbers):
lst.append(num)
From your explanation, there is no need to get more input from the user, so none of this code is needed. It is also always a good idea to put int(input()) in a try/except block because if the user inputs something other than a number, int(input()) will error out.
And lastly, the print statement:
print('max: %d\nmin: %d' % (max(lst), min(lst)))
In python, you can use the "string formatting operator", the percent (%) sign to put data into strings. You can use %d to fill in numbers, %s to fill in strings. Here is the full list of characters to put after the percent if you scroll down a bit. It also does a good job of explaining it, but here are some examples:
print('number %d' % 11)
x = 'world'
print('Hello, %s!' % x)
user_list = []
while True:
user_input = int(input())
if user_input < 0:
break
user_list.append(user_input)
print(min(user_list), max(user_list))

Option to save output printed on screen as a text file (Python)

Either I'm not using the right search string or this is buried deep within the interwebs. I know we aren't supposed to ask for homework answers, but I don't want the code answer, I want to know where to find it, cause my GoogleFu is busted.
Assignment is to create a program that will roll two 6-sided dice n times, with n being user-defined, between 1 and 9. The program then displays the results, with "Snake Eyes!" if the roll is 1-1, and "Boxcar!" if the roll is 6-6. It also has to handle ValueErrors (like if someone puts "three" instead of "3") and return a message if the user chooses a number that isn't an integer 1-9.
Cool, I got all that. But he also wants it to ask the user if they want to save the output to a text file. Um. Yeah, double-checked the book, and my notes, and he hasn't mentioned that AT ALL. So now I'm stuck. Can someone point me in the right direction, or tell me what specifically to search to find help?
Thanks!
Check out the input function:
https://docs.python.org/3.6/library/functions.html#input
It will allow you to request input from a user and store it in a variable.
You can do something like this to store your final output to a text file.
def print_text(your_result):
with open('results.txt', 'w') as file:
file.write(your_result)
# Take users input
user_input = input("Do you want to save results? Yes or No")
if(user_input == "Yes"):
print_text(your_result)
I hope this helps
Well, it's not pretty, but I came up with this:
def print_text():
with open('results.txt', 'w') as file:
file.write(str(dice))
loop = True
import random
min = 1
max = 6
dice = []
while loop is True:
try:
rolls = int(input("How many times would you like to roll the dice? Enter a whole number between 1 and 9: "))
except ValueError:
print("Invalid option, please try again.")
else:
if 1 <= rolls <= 9:
n = 0
while n < rolls:
n = n + 1
print("Rolling the dice ...")
print("The values are:")
dice1 = random.randint(min, max)
dice2 = random.randint(min, max)
dice.append(dice1)
dice.append(dice2)
print(dice1, dice2)
diceTotal = dice1 + dice2
if diceTotal == 2:
print("Snake Eyes!")
elif diceTotal == 12:
print("Boxcar!")
else: print("Invalid option, please try again.")
saveTxt = input("Would you like to save as a text file? Y or N: ")
if saveTxt == "Y" or saveTxt == "y":
print_text()
break

Numbers Only, Rounding up, and adding

so I am still learning Python so this should be rather easy to answer for some of you experts...
1) How can you make it so only numbers are accepted as an input?
def check_only_digit():
digits = input("Please input a number ")
if digits in "0123456789":
print("Working")
else:
print("Not working")
check_only_digit()
This will print "Working" if the inputted is a number in 0123456789 but only is this order. What I am asking is there any way to make it in any order?
2) How can I make the users digit round UP to the nearest 10?
def round_up():
users_number = input("Please input a number you want rounded ")
answer = round(int(users_number), -1)
print (answer)
round_up()
3) Is there anyway to add a number onto the end of another number? For example for 1+1, instead of equaling 2, can it equal 11?
I would like to thank you all for your responses in advance.
For Answer 1:
def check_Numbers():
number=input("Enter a number: ")
try:
number=int(number)
print("Working")
except(ValueError):
print("Not Working")
For Answer 2:
def rounding_Off():
userNumber=float(input("Enter a floating point number to round off: "))
roundedOff=round(userNumber,-1)
return roundedOff
For Answer 3:
def addNumbers():
number1=input("Enter one number: ")
number2=input("Enter another one: ")
newNumber=number1+number2
return int(newNumber)
#return newNumber <----- This if you want to get your number in string format.

Resources