Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 2 years ago.
Improve this question
Getting value error on code line 4.
n = int(input("enter number of students: "))
list1=[]
for i in range(0,n):
ele=int(input("enter the score of the student: "))
list1.append(ele)
list1.sort()
print("the runner up is: ", list1[-2])
It might have happened because you have accidently provided a character value that cannot be converted to int. So in line 4 you are getting ValueError. Another possible reason is you have used a decimal point number as input. A decimal number of str type cannot be converted to int type. So either use a float or use try and except to handle the issue.
You need to add a validation for your code and so try this:
n = int(input("enter number of students: "))
list1=[]
counter = 0
while counter != n:
try:
ele=int(input("enter the score of the student: "))
list1.append(ele)
counter += 1
except ValueError:
print("Your input should be a number!")
list1.sort()
try:
print("the runner up is: ", list1[-2])
except:
print("You should at least have two scores!")
Related
Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 7 months ago.
Improve this question
File "", line 1, in
ValueError: source code string cannot contain null bytes
Remainder of file ignored
def guess(x):
random_number = random.randint(1, x)
guess= 0
while guess = input (f'Guess a number beween 1 and %x')
guess(10)```
I am running this code in PyCHarm community edition !!
Please Help !
I am not to find this solution eventhough I tried multiple Sources
! !
if you want to computer guess a number, you can use:
import random
random.randint(1, 10)
or, if you want to get a guess from user:
x = 10
input(f'Guess a number between 1 and {x}')
and if you want to computer always guess a number untill it can find user input:
import random
def guess(x):
number = int(input(f'Guess a number between 1 and {x}'))
while True:
num = random.randint(1, x)
print(num)
if num == number:
break
guess(10)
or, human guess what computer selected:
import random
def guess(x):
number = random.randint(0,x)
while True:
user_num = int(input(f"Guess a number between 0 and {x}:"))
if user_num == number:
print("You guessed it!")
break
guess(10)
Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 2 years ago.
Improve this question
im strugguling to get a solution for my problem. I keep getting errors with my max(), and min() function.
Im trying to write a code that takes user inputs until a negative value is inputted.Then i need to take the sum, highest, lowest and avarges of the numbers.
the code:
print("Please enter values(negative value to stop)")
g=1
flag=0
list = []
while not flag:
val=float(input("Enter value number "+str(g)+ ": "))
g+=1
if val<0:
flag=1
else:
sum+=val
print("Sum of "+str(g-2)+ " values: "+str(sum))
print("The highest number is: ",min(low_number))
print("The lowest number is: ",min(low_number))
print("The average number is: ",sum/(g-1))
I am no expert but I think it is because you are not entering any of the values inputted into the lists. There is no where that you are appending the given values so there are no numbers in the lists to be checked.
I have not tested this but perhaps try
print("Please enter values(negative value to stop)")
flag=0
number = []
while not flag:
val=float(input("Enter value number :"))
if val<0:
flag=1
else:
number.append(val)
print("Sum of "+str(len(number))+ " values: "sum(number))
print("The highest number is: ",max(number))
print("The lowest number is: ",min(number))
print("The average number is: ",sum(number)/len(number))
EDIT: I made some changes to ensure it all works :)
EDIT 2: I have tested this and this code works entirely
low_number is empty, so min() on an empty list will fail.
Maybe you want to do something like this:
print("Please enter values(negative value to stop)")
flag=0
values=[]
while not flag:
val=float(input("Enter value number : "))
if val < 0:
break
values.append(val)
print("Sum of values: ",sum(values))
print("The highest number is: ",max(values))
print("The lowest number is: ",min(values))
print("The average number is: ",sum(values)/len(values))
Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 2 years ago.
Improve this question
I tried to write code as below to compare a serious of numbers.
largest = None
smallest = None
while True:
nums = numl = input("Enter a number: ")
if numl == "done" : break
if smallest == None:
smallest = nums
elif smallest > nums:
smallest = nums
print(smallest)
if largest == None:
largest = numl
elif largest < numl:
largest = int(numl)
print(largest)
print("Maximum is", largest)
print("Minimum is", smallest)
However, it makes the wrong result or even post error
Can someone help to check it?
Thank you in advance.
First of all I would request you to post the code with the question rather than an image link.
According to your code, you are taking input() which returns string, then you are trying to see if a string is > a int
which won't work
you can compare int with int and str with str
Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 4 years ago.
Improve this question
I'm creating an application for my programming class and I'm unable to get it to run properly. Essentially, the application should take 8 numbers from the user and store them in an array and then add those numbers. However, if the user does not provide a number, or press Q, the program should stop.
userNumberList = []
counter = 0
while counter < 8:
try:
userNumber = int(input("Welcome! Please provide numbers or press q to quit. "))
except ValueError:
print("Not a number. Closing application.")
break
else:
if userNumber == 'q':
break
else:
userNumberList.append(int(userNumber))
counter += 1
print(sum(userNumberList))
This is the error I get when running typing a String instead of a number in the prompt:
userNumber = int(input("Welcome! Please provide numbers or press q to quit. "))
ValueError: invalid literal for int() with base 10:
Try this:
Do not convert to int before checking to q.
userNumberList = []
counter = 0
while counter < 8:
userNumber = input("Welcome! Please provide numbers or press q to quit. ")
if userNumber == 'q':
print("Entered command to quit!! closing the application")
break
else:
try:
userNumberList.append(int(userNumber))
counter += 1
except ValueError:
print("Not a number. Closing application.")
break
print(sum(userNumberList))
Don't cast the input to an int straight away. You're handling that when appending anyway.
And apprently input evaluates input as python code. Use raw_input instead. This answer may be helpful Python 2.7 getting user input and manipulating as string without quotations
userNumber = raw_input("Welcome! Please provide numbers or press q to quit. ")
Changing this line fixes the program.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 8 years ago.
Improve this question
I'm pretty new to programming, and I have no idea how to go about this.
Basically I need a function that repeatedly prompts a user to input an integer until they enter a non-numerical characters, then it takes the numbers and averages them.
This what I have so far, the ave function is to average the numbers, that's not the problem
def ioAve():
L = input("Enter your number: ")
if L == int:
print(L)
if L != int:
ave(L)
The program doesn't return anything at all.
This is probably the most pythonic way I can think of to solve this. Your approach of checking if an entered number is of a certain type is less desirable than catching the exceptions that might be raised when trying to convert (e.g. in this case a ValueError is raised when an invalid value is passed to int() ). You can learn more about exceptions in Python at the Python wiki.
The solution below also uses a list, which is an object that can contain multiple values. You can learn more about lists at effbot.org.
numbers = list()
while True:
try:
number = int(input("Enter a number: "))
numbers.append(number)
except ValueError:
break
print ("The average is", sum(numbers) / len(numbers))
cont = True
nums = []
while cont:
entered = input("Enter a number: ")
cont = all(char.isdigit() for char in entered)
if cont:
nums.append(int(entered))
print("The average is:", sum(nums)/len(nums))
Something like this:
print('Average: ',(lambda x:sum(x)/len(x))
([x for x in iter(lambda:(lambda x:int(x)
if x and all(x.isdigit() for x in x)else
...)(input('Enter a number: ')),...)]))
Sorry, I couldn't resist.
Something like this maybe. I'm sure there is a more pythonic way thou.
#import sys instead of using sys for program termination
def main():
sum = 0
iterations = 0
while True:
try:
num = int(raw_input("Input an integer: "))
iterations += 1
sum += num
except:
print "Average: "+str(sum//iterations)
#sys.exit() use break to "jump" out of an infinite loop
break
if __name__ == "__main__":
main()