How to count the amount of digits in an input? [duplicate] - python
This question already has answers here:
Correct output for function that counts occurrences of each digit in a string
(3 answers)
Closed 5 years ago.
I would like to count the amount of numbers in an input for example in the four digit number 4256 how would I find out how many fours, twos, fives and sixes there are. I would be looking for the amount of numbers in a random number.
EDIT:
I continued to work on this and this is what I got. Apologies for asking a duplicate question.
import random
import random
guess = random.randint(1000,9999)
guess = str(guess)
correct = 0
print(guess) #this was only here for testing
number = input("Enter ")
list(number)
if number[0] in guess:
correct = correct + 1
print (correct)
To count how many times x appears in y, use
z = y.count(x)
Related
how to ask for user input over again in a recursive function [duplicate]
This question already has answers here: Asking the user for input until they give a valid response (22 answers) Closed 1 year ago. num_length = int(input('Enter the length of the sequence:\n')) nomlist=[] count = 0 for i in range (num_length): num = int(input('Enter number '+str(i+1)+ ':\n')) nomlist.append(num) this is a part of the solution for my homework, but now I need to rewrite it in a recursive form and I am not sure how I am supposed to change the above code in a recursive function. The above code basically asks the user to input a number and based on that number the program repeatedly asks the user for input and appends it into the list. Please help me.
num_length = int(input('Enter the length of the sequence:\n')) nomlist=[] def rec(l, count, num_length): if count <= 0: return else: num = int(input('Enter number '+str(num_length-count+1)+ ':\n')) l.append(num) rec(l, count-1, num_length) rec(nomlist, num_length, num_length) print(nomlist)
Here's a recursive function that makes use of default parameter values and conditional expressions to minimize the amount of code required: def get_nums(length, numbers=None, entry=1): numbers = [] if not numbers else numbers numbers.append(input(f' Enter number {entry}: ')) return numbers if entry == length else get_nums(length, numbers, entry+1) length = int(input('Enter the length of the sequence: ')) nomlist = get_nums(length) print(nomlist)
I have to generate random integers in python, but the user has to say how many integers they want to generate [duplicate]
This question already has answers here: Generate 'n' unique random numbers within a range [duplicate] (4 answers) Closed 2 years ago. I have to ask the user how many numbers they want to generate and then i can generate integers according to them in the range of 0 to a 100. If the user wants 5 numbers I have to generate 5 random numbers, but have no clue how. input("How many numbers should the string consist of? ") #The user gives a number for i in range(4): # I used a 4 but its going to be the users input print(random.randint(0, 100)) #The integers will print Afterwards I have to calculate the total of all the integers generated, The total is: sum of generated integers.
from random import randint def random_generate(count: int): for _ in range(count): yield randint(0, 100) for num in random_generate(20): print("random number is:", num)
Change the for i in range loop iteration count to the number of integers the user wants: num = int(input("How many numbers should the string consist of? ")) for i in range(num): print(random.randint(0, 100)) #The integers will print Afterwards I have to calculate the total of all the integers generated, The total is: sum of generated integers. Add a variable to count all the integers, in this case it is count: num = int(input("How many numbers should the string consist of? ")) count=0 for i in range(num): randomnumber = random.randint(0, 100) print(randomnumber) count += randomnumber print(count)
Looks like i posted at the same time as Daniil To add to Daniils answer: You could also do a validation for when the user does not enter an integer it gets promted again. import random while True: try: user_input_str = input("How many numbers should the string consist of?") #The user gives a number num = int(user_input_str) break except ValueError: print(f"{user_input_str} is not an integer, please enter an integer)") total_sum = 0 for i in range(num): # I used a 4 but its going to be the users input random_int = random.randint(0, 100) print(f"#{i} Random int: {random_int}") total_sum = total_sum + random_int print(f"Total sum: {total_sum}")
Problem in a number guessing program's while loop [duplicate]
This question already has answers here: How can I read inputs as numbers? (10 answers) Closed 3 years ago. I'm new to Yython programming. I create a simple program with random module, that ask for number, and person need to guess an number. I got problem with getting the answer. Even if I give the correct answer, program isn't stopping, here's the code: import random run = True answer = random.randint(1,9) guess = input("Give me an number in 1 to 9: ") print(answer) while run: if guess == answer: print("Congratulations, you won!\n" * 5) run = False else: guess = input("Try again: ") print(answer) The print(answer) line is for me to know what is the answer, and even if I write it down, program isn't stopping.
answer is always an integer: answer = random.randint(1,9) and guess is always a string: guess = input("Give me an number in 1 to 9: ") thus they can never be equal. You need to conver the inputted string to an integer: guess = int(input("Give me an number in 1 to 9: ")) Or better yet, convert the generated random number to a string, to avoid the issue of the program crashing when the user inputs a non digit: answer = str(random.randint(1,9))
The random function will return an integer and the input function will return a string in python, "1" is not equal to 1. To be able to check if the input is the same, convert the random number to a string by doing guess == str(answer) instead
Need Help Using If Statements and Lists [duplicate]
This question already has answers here: Check if item is in an array / list [duplicate] (5 answers) Closed 4 years ago. I am new to python and am having a hard time figuring out where my issue begins, I believe that I am mis-defining the variable "primes" in my first if statement. I appreciate the help. The paragraph below is of the task that I am trying to accomplish. Take a number from the user. Respond with the word "Unitary" if the number is 1, with the word "Prime" if the number is in the list and with the word "Composite" otherwise. primes = [2,3,5,7,11,13,17,19,23,29, 31,37,41,43,47,53,59,61,67,71, 73,79,83,89,97,101,103,107,109,113, 127,131,137,139,149,151,157,163,167,173, 179,181,191,193,197,199,211,223,227,229, 233,239,241,251,257,263,269,271,277,281, 283,293,307,311,313,317,331,337,347,349, 353,359,367,373,379,383,389,397,401,409, 419,421,431,433,439,443,449,457,461,463, 67,479,487,491,499,503,509,521,523,541, 547,557,563,569,571,577,587,593,599,601, 607,613,617,619,631,641,643,647,653,659, 661,673,677,683,691,701,709,719,727,733, 739,743,751,757,761,769,773,787,797,809, 811,821,823,827,829,839,853,857,859,863, 877,881,883,887,907,911,919,929,937,941, 947,953,967,971,977,983,991,997,1009,1013, 1019,1021,1031,1033,1039,1049,1051,1061,1063,1069, 1087,1091,1093,1097,1103,1109,1117,1123,1129,1151, 1153,1163,1171,1181,1187,1193,1201,1213,1217,1223, 1229,1231,1237,1249,1259,1277,1279,1283,1289,1291, 1297,1301,1303,1307,1319,1321,1327,1361,1367,1373, 1381,1399,1409,1423,1427,1429,1433,1439,1447,1451, 1453,1459,1471,1481,1483,1487,1489,1493,1499,1511, 1523,1531,1543,1549,1553,1559,1567,1571,1579,1583, 1597,1601,1607,1609,1613,1619,1621,1627,1637,1657, 1663,1667,1669,1693,1697,1699,1709,1721,1723,1733, 1741,1747,1753,1759,1777,1783,1787,1789,1801,1811, 1823,1831,1847,1861,1867,1871,1873,1877,1879,1889, 1901,1907,1913,1931,1933,1949,1951,1973,1979,1987, 1993,1997,1999,2003,2011,2017,2027,2029,2039,2053, 2063,2069,2081,2083,2087,2089,2099,2111,2113,2129, 2131,2137,2141,2143,2153,2161,2179,2203,2207,2213, 2221,2237,2239,2243,2251,2267,2269,2273,2281,2287, 293,2297,2309,2311,2333,2339,2341,2347,2351,2357, 2371,2377,2381,2383,2389,2393,2399,2411,2417,2423, 2437,2441,2447,2459,2467,2473,2477,2503,2521,2531, 2539,2543,2549,2551,2557,2579,2591,2593,2609,2617, 2621,2633,2647,2657,2659,2663,2671,2677,2683,2687, 2689,2693,2699,2707,2711,2713,2719,2729,2731,2741, 2749,2753,2767,2777,2789,2791,2797,2801,2803,2819, 2833,2837,2843,2851,2857,2861,2879,2887,2897,2903, 2909,2917,2927,2939,2953,2957,2963,2969,2971,2999, 3001,3011,3019,3023,3037,3041,3049,3061,3067,3079, 3083,3089,3109,3119,3121,3137,3163,3167,3169,3181, 3187,3191,3203,3209,3217,3221,3229,3251,3253,3257, 3259,3271,3299,3301,3307,3313,3319,3323,3329,3331, 3343,3347,3359,3361,3371,3373,3389,3391,3407,3413, 3433,3449,3457,3461,3463,3467,3469,3491,3499,3511, 3517,3527,3529,3533,3539,3541,3547,3557,3559,3571, 3581,3583,3593,3607,3613,3617,3623,3631,3637,3643, 3659,3671,3673,3677,3691,3697,3701,3709,3719,3727, 3733,3739,3761,3767,3769,3779,3793,3797,3803,3821, 3823,3833,3847,3851,3853,3863,3877,3881,3889,3907, 3911,3917,3919,3923,3929,3931,3943,3947,3967,3989, 4001,4003,4007,4013,4019,4021,4027,4049,4051,4057, 4073,4079,4091,4093,4099,4111,4127,4129,4133,4139, 4153,4157,4159,4177,4201,4211,4217,4219,4229,4231, 4241,4243,4253,4259,4261,4271,4273,4283,4289,4297, 4327,4337,4339,4349,4357,4363,4373,4391,4397,4409, 4421,4423,4441,4447,4451,4457,4463,4481,4483,4493, 4507,4513,4517,4519,4523,4547,4549,4561,4567,4583, 4591,4597,4603,4621,4637,4639,4643,4649,4651,4657, 4663,4673,4679,4691,4703,4721,4723,4729,4733,4751, 4759,4783,4787,4789,4793,4799,4801,4813,4817,4831, 4861,4871,4877,4889,4903,4909,4919,4931,4933,4937, 4943,4951,4957,4967,4969,4973,4987,4993,4999,5003, 5009,5011,5021,5023,5039,5051,5059,5077,5081,5087, 5099,5101,5107,5113,5119,5147,5153,5167,5171,5179, 5189,5197,5209,5227,5231,5233,5237,5261,5273,5279, 5281,5297,5303,5309,5323,5333,5347,5351,5381,5387, 5393,5399,5407,5413,5417,5419,5431,5437,5441,5443, 5449,5471,5477,5479,5483,5501,5503,5507,5519,5521, 5527,5531,5557,5563,5569,5573,5581,5591,5623,5639, 5641,5647,5651,5653,5657,5659,5669,5683,5689,5693, 5701,5711,5717,5737,5741,5743,5749,5779,5783,5791, 5801,5807,5813,5821,5827,5839,5843,5849,5851,5857, 5861,5867,5869,5879,5881,5897,5903,5923,5927,5939, 5953,5981,5987,6007,6011,6029,6037,6043,6047,6053, 6067,6073,6079,6089,6091,6101,6113,6121,6131,6133, 6143,6151,6163,6173,6197,6199,6203,6211,6217,6221, 6229,6247,6257,6263,6269,6271,6277,6287,6299,6301, 6311,6317,6323,6329,6337,6343,6353,6359,6361,6367, 6373,6379,6389,6397,6421,6427,6449,6451,6469,6473, 6481,6491,6521,6529,6547,6551,6553,6563,6569,6571, 6577,6581,6599,6607,6619,6637,6653,6659,6661,6673, 6679,6689,6691,6701,6703,6709,6719,6733,6737,6761, 6763,6779,6781,6791,6793,6803,6823,6827,6829,6833, 6841,6857,6863,6869,6871,6883,6899,6907,6911,6917, 6947,6949,6959,6961,6967,6971,6977,6983,6991,6997, 7001,7013,7019,7027,7039,7043,7057,7069,7079,7103, 7109,7121,7127,7129,7151,7159,7177,7187,7193,7207, 7211,7213,7219,7229,7237,7243,7247,7253,7283,7297, 7307,7309,7321,7331,7333,7349,7351,7369,7393,7411, 7417,7433,7451,7457,7459,7477,7481,7487,7489,7499, 7507,7517,7523,7529,7537,7541,7547,7549,7559,7561, 7573,7577,7583,7589,7591,7603,7607,7621,7639,7643, 7649,7669,7673,7681,7687,7691,7699,7703,7717,7723, 7727,7741,7753,7757,7759,7789,7793,7817,7823,7829, 7841,7853,7867,7873,7877,7879,7883,7901,7907,7919, 7927,7933,7937,7949,7951,7963,7993,8009,8011,8017, 8039,8053,8059,8069,8081,8087,8089,8093,8101,8111, 8117,8123,8147,8161,8167,8171,8179,8191,8209,8219, 8221,8231,8233,8237,8243,8263,8269,8273,8287,8291, 8293,8297,8311,8317,8329,8353,8363,8369,8377,8387, 8389,8419,8423,8429,8431,8443,8447,8461,8467,8501, 8513,8521,8527,8537,8539,8543,8563,8573,8581,8597, 8599,8609,8623,8627,8629,8641,8647,8663,8669,8677, 8681,8689,8693,8699,8707,8713,8719,8731,8737,8741, 8747,8753,8761,8779,8783,8803,8807,8819,8821,8831, 8837,8839,8849,8861,8863,8867,8887,8893,8923,8929, 8933,8941,8951,8963,8969,8971,8999,9001,9007,9011, 9013,9029,9041,9043,9049,9059,9067,9091,9103,9109, 9127,9133,9137,9151,9157,9161,9173,9181,9187,9199, 9203,9209,9221,9227,9239,9241,9257,9277,9281,9283, 9293,9311,9319,9323,9337,9341,9343,9349,9371,9377, 9391,9397,9403,9413,9419,9421,9431,9433,9437,9439, 9461,9463,9467,9473,9479,9491,9497,9511,9521,9533, 9539,9547,9551,9587,9601,9613,9619,9623,9629,9631, 9643,9649,9661,9677,9679,9689,9697,9719,9721,9733, 9739,9743,9749,9767,9769,9781,9787,9791,9803,9811, 9817,9829,9833,9839,9851,9857,9859,9871,9883,9887, 9901,9907,9923,9929,9931,9941,9949,9967,9973,10007] number = int(input("Choose A Number")) if number == primes:print("Primes") elif number == 1: print("Unitary") else: print("Composite")
Should be if number in primes (not if number == primes)
number = int(input("Choose A Number")) if number in primes: print("Primes") elif number == 1: print("Unitary") else: print("Composite")
Change if line with if number in primes:
How to find a specific number from a user inputed list in python [duplicate]
This question already has answers here: Python - Count elements in list [duplicate] (7 answers) Closed 7 years ago. I want the program to find the number of times a particular number occurs within a list. What am I doing wrong here? def list1(): numInput = input("Enter numbers separated by commas: ") numList = numInput.split(",") numFind = int(input("Enter a number to look for: ")) count = 0 for num in numList: if num == numFind: count += 1 length = len(numList) # dividing how many times the input number was entered # by the length of the list to find the % fraction = count / length print("Apeared",count,"times") print("Constitutes",fraction,"% of this data set") list1()
numList isn't a list of numbers, it's a list of strings. Try converting to integer before comparing to numFind. if int(num) == numFind: Alternatively, leave numFind as a string: numFind = input("Enter a number to look for: ") ... Although this may introduce some complications, e.g. if the user enters 1, 2, 3, 4 as their list (note the spaces) and 2 as their number, It will say "Appeared 0 time" because " 2" and "2" won't compare equal.
There are 2 issues with the code, First you are comparing int with str and the second is count / length. In Python when you divide int with int you get an int returned not a float (as expected.) so fraction = flost(count) / length would work for you , also you need to convert all the elements in the list to integers which can be done as : numList = map(int, numInput.split(","))