Create a search in a range - python

I am new to Python and would like a simple code to be executed however due to my understanding of the syntax I am not able to create it.
I would need to create a range between 1 to 10 and create an input function to search if this number is within this range. My code looks like this:
range=[1,10]
i=0
for i in len(range):
if (i) > 1 and (i) < c:
print ("HH")
However there is an error. Any solutions with explanations?

range is a function so you can either use
if i in range(1,10):
or
if i >= 1 and i < 10:
In your code, you made a variable that happened to be named range but it was actually just a list with two int elements in it.

The following might help you understand a bit better. First of all avoid calling your variable range as this is a Python function. It is used to return a list of numbers. It can take two parameters, a starting number, and an ending number. The ending number is not included in the list, so for 1 to 10 you need range(1,11).
c = int(input("Enter search number: "))
for i in range(1, 11):
if 1 < i < c:
print(i, "HH")
else:
print(i)
This would display:
1
2 HH
3 HH
4 HH
5
6
7
8
9
10
I am not sure which version of Python you are using. If it is earlier than Python 3, then remove the brackets from the print statements.
If you just want to see if the entered number is in a certain range, something like the following would be suitable:
c = int(input("Enter search number: "))
if 1 <= c <= 10:
print("The number {} is in the range 1 to 10".format(c))
else:
print("The number {} is not in range".format(c))
You would then see it display:
Enter search number: 5
The number 5 is in the range 1 to 10

Related

(Beginner) Why is this not correct?

#Add the input number 4 times. Ex. 3+3+3+3
#If the input is 3, the output will be 12
num = int(input("Num: "))
for x in range(2):
num += num
print(num)
Using an app called "Easy Coder" and
for some reason, the code above is not correct.
Is there a better way to do this? so the actual process of the code is("3+3+3+3) and not(3+3) + (3+3)
Edit: Sorry, I forgot to mention, that this is an exercise related to
looping.
The task:
Write a program that uses a for loop to calculate any
number X 4.
Hint - Add the number to a variable 4 times.
To add 4 times, use a separate variable for the total and loop 4 times instead of twice
num = int(input("Num: "))
total = 0
for _ in range(4):
total += num
print(total)
You can always create another variable to store the total, or you could simply multiply the number initially by 4 instead of using a loop. Otherwise, like you said, your code is actually doing:
3 + 3 = 6
6 + 6 = 12
since you overwrite the initially supplied number.

input expected at most 1 argument, got 2 python

I keep receiving this error (TypeError: input expected at most 1 argument, got 2) and I can't figure out why. The goal of the code is to keep asking for a number until that number is between one and a variable called n.
def enterValidNumber(n):
while True:
num = int(input("Input a number from 1 to", n))
if num >= 1 and num <= n:
break
enterValidNumber(17)
Yes, you are right; you are giving two parameters to input. To put n into the prompt string, you can use an f-string:
num = int(input(f"Input a number from 1 to {n}"))
You can always go with j1-lee's answer but I would have another suggestion:
num = int(input("Input a number from 1 to " + str(n)))
this would work well too!

Competitive Programming Python: Repeated sum of digits Error

Don't know It's right place to ask this or not. But I was feeling completely stuck. Couldn't find better way to solve it.
I am newbie in competitive Programming. I was solving Repeated sum of digits problem Here is The Question.
Given an integer N, recursively sum digits of N until we get a single digit.
Example:-
Input:
2
123
9999
Output:-
6
9
Here is my code:-
def sum(inp):
if type(inp) == int:
if len(str(inp)) <= 1:
return inp
else:
a = list(str(inp))
while len(a) > 1:
b = 0
for i in a:
b+= int(i)
a = list(str(b))
return b
t = int(raw_input())
for i in range(0,t):
print sum(i)
While submitting it gave My following error:-
Wrong !! The first test case where your code failed:
Input:
42
Its Correct output is:
6
And Your Output is:
0
However When I tested my code personally using 42 It's perfectly gives me correct Output 6.
Here is the link of question:- Repeated sum of digits Error
You have not implemented the code properly. You are iterating over i from 0 to t. Why?? The methodology goes as follows:
N = 12345
Calculate the sum of digits(1+2+3+4+5 = 15).
Check if it is less than 10. If so, then the current sum is the answer.. If not.. follow the same procedure by setting N = 15
Here is the code:
def sum(inp):
while inp > 9:
num = inp
s = 0
while num > 0:
s = s + num%10
num = num/10
inp = s
return inp
t = int(raw_input())
for i in range(t):
n = int(raw_input())
print sum(n)
Edit: I think you are iterating till t because you have considered t to be the number of testcases. So, inside the for loop, you should take another input for N for each of the testcase. [This is based on the input and output that you have provided in the question]
Edit-2: I have changed the code a bit. The question asks us to find the repeated sum of t numbers. For that, I have added a loop where we input a number n corresponding to each testcase and find its repeated sum.

"'int' object is not iterable" when asking for a Number input (beginner)

I am planning to create a program which basically lists the Fibbonacci sequnce up to 10,000
My problem is that in a sample script that I wrote I keep getting the error 'int' object is not iterable
My aim is that you enter a number to start the function's loop.
If anyone would help out that would be great
P.S I am a coding noob so if you do answer please do so as if you are talking to a five year old.
Here is my code:
def exp(numbers):
total = 0
for n in numbers:
if n < 10000:
total = total + 1
return total
x = int(input("Enter a number: "), 10)
exp(x)
print(exp)
numbers is an int. When you enter the number 10, for example, the following happens in exp():
for n in 10:
...
for loops through each element in a sequence, but 10 is not a sequence.
range generates a sequence of numbers, so you should use range(numbers) in the for loop, like the following:
for n in range(numbers):
...
This will iterate over the numbers from 0 to number.
As already mentioned in comments, you need to define a range -- at least this is the way Python do this:
def exp(numbers):
total = 0
for n in range(0, numbers):
if n < 10000:
total = total + 1
return total
You can adjust behavior of range a little e.g. interval is using. But this is another topic.
Your code is correct you just need to change :
for n in numbers:
should be
for n in range(0, numbers)
Since you can iterate over a sequence not an int value.
Good going, Only some small corrections and you will be good to go.
def exp(numbers):
total = 0
for n in xrange(numbers):
if n < 10000:
total += 1
return total
x = int(input("Enter a number: "))
print exp(x)

Python if looping only returning final result

I have a very simple issue here but not sure how to resolve it because I am new to Python.
I am writing a code to do calculations using if looping and would like to see the all the results generated by each loop.However, by running my current code below, it is only displaying the final result which should be 1.
Can anyone point out the problem and correct it?
n=int(raw_input("Enter a number: "))
while n !=1:
if n % 2 ==0:
n=n/2
else:
n=n*3+1
print n
The question above code is writing up for is as following:
given an integer n≥1, if n is even, divide by 2. If n is odd, multiply by 3 and add 1. Repeat this process with the new value of n. As far as anyone can tell, this always ends up with n=1
For example:
Enter a number: 22
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
Python works based on indentation, if you have programmed with other languages before you may not have come a cross this. If you don't indent your code properly Python wont understand.
n=int(raw_input("Enter a number: "))
while n !=1:
if n % 2 ==0:
n=n/2
else:
n=n*3+1
print n
Will run the while loop and at the end print the final answer as you have said.
On the other hand,
n=int(raw_input("Enter a number: "))
while n !=1:
if n % 2 ==0:
n=n/2
else:
n=n*3+1
print n
Loops through until n doesn't equal one printing n each time.
Python is one of the few languages that works like this so this won't matter in other languges but does in python.
Indent your print n statement to put it inside the loop.
The indentation of the last print is wrong. Try this:
n=int(raw_input("Enter a number: "))
while n !=1:
if n % 2 ==0:
n=n/2
else:
n=n*3+1
print n

Categories