0

So I have a couple strings

first = input("Enter a starting integer: ")
last = input("Enter an ending integer: ")
    last = last + 1

How do I make another assignment to a string "n" that I want to take the value of each individual integer in the range? I want to use "n" in a well formatted table to analyze each value as odd, prime, etc.

3
Contributors
16
Replies
17
Views
8 Years
Discussion Span
Last Post by snippsat
Featured Replies
  • I would assign the integers to a list inside of variable "n". Now, I didn't exactly understand your entire post but here's what I got: [CODE] n = [] first = input("Enter a starting integer: ") last = input("Enter an ending integer: ") last = last + 1 for integer … Read More

1

I would assign the integers to a list inside of variable "n". Now, I didn't exactly understand your entire post but here's what I got:

n = []
first = input("Enter a starting integer: ")
last = input("Enter an ending integer: ")
    last = last + 1
for integer in range(first, last):
    n.append(integer)

Then you use index indices to get each item. So if to print all the items. You would do this.

length = len(n)
for x in range(1, length)
    print (n[x])
0

Thanks that's just what I needed.

0

You're welcome, but it's important to know how it's reading from each item in the list. So if you wanted to see the second item of the list you would do list_name[2], or if you wanted to see the 3rd item do list_name[3] and so on.
P.S.
Once your question is solved, it helps if you click the, Thread Solved button at the bottom of the screen.

0

Instead of making another thread I'll just continue posting here (I've got small problems popping up here and there).

For determining whether the number is odd or even I have this:

def dOdd(n):
    # returns True if n is odd and False if not.
    if n == 1:
        return False
    else:
        return True

Now how should I refer to this to print "odd" if the number is odd or "even" likewise? I tried:

odd = dOdd(n)

I'm thinking an if statement here but I'm not sure how I would do that and refer to dOdd(n) at the same time.

Edited by DEATHMASTER: n/a

0

First of all, let's use a more accurate way to find an odd number.
Do this:

def isOdd(number):
    if (number % 2) != 0: # The % sign is the remainder of a number 
        return True             # When divided
    else:
        return False

isOdd(3) # run the function, testing if 3 is odd

odd_test = isOdd(3)
if odd_test == True:
    print (number, "is odd")
else:
    print (number, "isn't odd")
0

For determining whether the number is odd or even I have this:

Just som traning in idle is good to do.

>>> 2 % 2
0
>>> 3 % 2
1
>>> 4 % 2
0
>>> 5 % 2
1
>>> 6 % 2
0
>>> # now you see not so hard
>>> 
>>> # we make a function that print odd/even
>>> def odd(number):
	if number % 2 == 1:
		print 'odd'
	else:
		print 'even'
		
>>> odd(2)
even
>>> odd(3)
odd
>>> #we make a function that return True/false
>>> def odd(number):
	if number % 2 == 1:
		return True
	return False

>>> odd(6)
False
>>> odd(7)
True
>>>
0

Ah of course, see I know about the modulus but I never think of these things when I have to actually use them.
Anyways how do you use that for a string? I just get an error

TypeError: unsupported operand type(s) for %: 'list' and 'int'

Again, I'm using "n" as opposed to "number"

0

So i used python 2.x.
Rember () for print in python3.x print('odd')

Now from idle python 3.x

>>> #Let look at type
>>> first = input("Enter a starting integer: ")
Enter a starting integer: 8
>>> 8
8
>>> type(first)
<class 'str'>
>>> #you se this is a string
>>> #so if you gone compare it to integer convert it
>>> a = int(first)
>>> a
8
>>> type(a)
<class 'int'>
>>> #now it`s a integer
>>> def odd(number):
	if number % 2 == 1:
		print ('odd')
	else:
		print ('even')

		
>>> odd(a)
even
>>>

TypeError: unsupported operand type(s) for %: 'list' and 'int'

So now you know how to check for type.
If not correct type you get a message like you got TypeError.

Edited by snippsat: n/a

0

That seems to work in python idle but in the code I'm writing in emacs I run it and it says "TypeError: int() argument must be a string or a number"
One major difference in idle was

#
>>> first = input("Enter a starting integer: ")
#
Enter a starting integer: 8
#
>>> 8
#
8
#
>>> type(first)
<type 'int'>

So it's already an int, so I tried your way anyways and I get that error.
I am working with functions so maybe that makes a difference. This is as far as I'm along:

def dOdd(n):
    # Returns True if odd
    if (n % 2) == 1:
        return True
    else:
        return False

def linePrinting(n, odd):
    length = len(n)
    for x in range(1, length):
        print (n[x]), odd

first = input("Enter a starting integer: ")
first = first - 1
last = input("Enter an ending integer: ")
last = last + 1

linePrinting()
n = []
for integer in range(first,last):
    n.append(integer)
    if dOdd(a) == True:
        odd = "even"
    else:
        odd = "odd"

dOdd(n)
linePrinting(n, odd)

...and with that I end up with that error "TypeError: unsupported operand type(s) for %: 'list' and 'int'"

0

So lets think about what you are doing.

first = int(input("Enter a starting integer: ")) # we make it return a integer
first = first - 1
last = int(input("Enter an ending integer: "))   # we make it return a integer
last = last + 1

print (first) # test print
print (last) # test print

#so now this part work

linePrinting()  # this must have 2 argumet and you have given it 0

n = []
for integer in range(first,last):
    n.append(integer)    # here you making a list
    if dOdd(a) == True:  # you dont have a anywere
        odd = "even"
    else:
        odd = "odd"

# and you cant compare a list for opp/even
# back to idle
>>> def dOdd(n):
    # Returns True if odd
    if (n % 2) == 1:
        return True
    else:
        return False

>>> dOdd(5)
True
>>> dOdd(6)
False
>>> x = [2,3,4,5,6]
>>> dOdd(x)  #try to compare list for even/odd
Traceback (most recent call last):
  File "<pyshell#65>", line 1, in <module>
    dOdd(x)
  File "<pyshell#61>", line 3, in dOdd
    if (n % 2) == 1:
TypeError: unsupported operand type(s) for %: 'list' and 'int' #this can not take a list

So rethink what you are trying to do.

Edited by snippsat: n/a

0

Ok I fixed the minor problems, but if modulus cannot take a list, how do I evaluate each value for "n"?

0

So you have first and last user inupt value that you use range on.
Then you have a list with number.

>>> first = 2
>>> last = 9
x = list(range(first, last)) 
[2, 3, 4, 5, 6, 7, 8]

>>># now to find odd/even you can use this
>>> x[::2]
[2, 4, 6, 8]
>>> x[1::2]
[3, 5, 7]
>>>

Or look at this solution make 2 list odd/even based on range given by user.

n_odd = []
n_even = []

first = int(input("Enter a starting integer: "))  #input 2
last = int(input("Enter an ending integer: "))    #input 8

for integer in range(first, last):
    if integer % 2 == 1:
        n_odd.append(integer)
    else:
        n_even.append(integer)

print(n_odd)
print(n_even)

'''my output-->
[3, 5, 7]
[2, 4, 6]
'''

Edited by snippsat: n/a

0

Hmm that isn't exactly how I want it to work (since this is in a printed "list" not a range list like [#, #]). I managed to get it to print but not evaluated properly like this

def dOdd(n):
    # Returns True if odd
    for n in range(first, last):
        if n % 2 == 1:
            return True
        else:
            return False

def linePrinting(n, odd):
    length = len(n)
    if odd == True:
        odd = "odd"
    else:
        odd = "even"
    for x in range(1, length):
        print (n[x]), odd

But this way it's always printing out "odd" some reason.
I figure I need another function to return the sum of the divisors, but how would that work?

Edited by DEATHMASTER: n/a

0

Please test your functions.

>>> def dOdd(n):
    # Returns True if odd
    for n in range(first, last):
        if n % 2 == 1:
            return True
        else:
            return False
        
>>> dOdd(5)
False
>>> dOdd(6)
False
>>> dOdd(2)
False
>>> dOdd(9)
False
>>> 
#So it not so hard to se that it dont work.
>>> n = [2,3,4,5]
>>> odd = 5
>>> def linePrinting(n, odd):
    length = len(n)
    if odd == True:
        odd = "odd"
    else:
        odd = "even"
    for x in range(1, length):
        print (n[x]), odd

        
>>> linePrinting(n, odd)
3
4
5
>>> #so think off does this do what you want?

I am not sure what you want now.
Explain very clear what you want,so it is eaiser to help.

0

Thanks anyways, I have run out of time for that part. For other part I need to know how to work with math.sqrt with "n" I get error "TypeError: a float is required." if I simply try "math.sqrt(n). However I think its a similar issue as the last problem I had.

0

I get error "TypeError: a float is required." if I simply try "math.sqrt(n). However I think its a similar issue as the last problem I had.

>>> import math
>>> dir(math)
['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'hypot', 'isinf', 'isnan', 'ldexp', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
>>> #Some useful stuff
>>> print (math.sqrt.__doc__)
sqrt(x)

Return the square root of x.
>>> help(math.sqrt)
Help on built-in function sqrt in module math:

sqrt(...)
    sqrt(x)
    
    Return the square root of x.

>>> #So test it out
>>> n = 9
>>> math.sqrt(n)
3.0
>>> #will it work with float number?
>>> n = 9.5
>>> type(n)
<class 'float'>
>>> math.sqrt(n)
3.082207001484488
>>> #So let make a TypeError
>>> n = [1,2,3]
>>> math.sqrt(n)
Traceback (most recent call last):
  File "<pyshell#110>", line 1, in <module>
    math.sqrt(n)
TypeError: a float is required
>>> #So math.sqrt can take integer/float but not list
>>>

Edited by snippsat: n/a

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.