Python Forum
[MicroPython] Beginner, program with lists
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[MicroPython] Beginner, program with lists
#1
Hello Smile

So here I am a beginner in Python and I have an exercise that asks me to replace the repetition with the list but I can't understand how to use it Undecided

Here is the code :

from random import *
from math import *
n=int(input("n="))
a=0
b=0
c=0
d=0
e=0
f=0
g=0
h=0
j=0
k=0
l=0
for i in range(1,n+1):
 r=randint(1,6)+randint(1,6)
 if r==2:
  a=a+1
 if r==3:
  b=b+1
 if r==4:
  c=c+1
 if r==5:
  d=d+1
 if r==6:
  e=e+1
 if r==7:
  f=f+1
 if r==8:
  g=g+1
 if r==9:
  h=h+1
 if r==10:
  j=j+1
 if r==11:
  k=k+1
 if r==12:
  l=l+1
print("2:"+str(a))
print("3:"+str(b))
print("4:"+str(c))
print("5:"+str(d))
print("6:"+str(e))
print("7:"+str(f))
print("8:"+str(g))
print("9:"+str(h))
print("10:"+str(j))
print("11:"+str(k))
print("12:"+str(l))
So i have this idea :

from random import *
from math import *
n=int(input("n="))
list = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
But I don't know how to use the list for the rest of the program Huh
Reply
#2
First of all, don't name your list 'list'. That is a built-in function, and using it as a name may block code from using it.

Second, you can assign by index in the list. So if you rename your list to 'counts', then counts[0] += 1 increases the first item in the list by 1. Also, counts[1] gives you the second item in the list.
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply
#3
Ok ! But what about the rest ?

for i in range(1,n+1):
 r=randint(1,6)+randint(1,6)
 if r==2:
  a=a+1
 if r==3:
  b=b+1
 if r==4:
  c=c+1
 if r==5:
  d=d+1
 if r==6:
  e=e+1
 if r==7:
  f=f+1
 if r==8:
  g=g+1
 if r==9:
  h=h+1
 if r==10:
  j=j+1
 if r==11:
  k=k+1
 if r==12:
  l=l+1
print("2:"+str(a))
print("3:"+str(b))
print("4:"+str(c))
print("5:"+str(d))
print("6:"+str(e))
print("7:"+str(f))
print("8:"+str(g))
print("9:"+str(h))
print("10:"+str(j))
print("11:"+str(k))
print("12:"+str(l))
How can I reduce that :/

Ok, so I managed to do that, is it ok or can I reduce/optimise it more ?

from random import *
from math import *
n=int(input("n="))
sommes = [0]*11
for i in range(1,n+1):
 r=randint(1,6)+randint(1,6)
 if r==2:
  sommes[0] += 1
 if r==3:
  sommes[1] += 1
 if r==4:
  sommes[2] += 1
 if r==5:
  sommes[3] += 1
 if r==6:
  sommes[4] += 1
 if r==7:
  sommes[5] += 1
 if r==8:
  sommes[6] += 1
 if r==9:
  sommes[7] += 1
 if r==10:
  sommes[8] += 1
 if r==11:
  sommes[9] += 1
 if r==12:
  sommes[10] += 1
print(sommes)
Reply
#4
Look at all those ifs. Look what r is being compared to, and what index you are using with sommes. See a pattern?
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  MicroPython ESP32 color changing from temps Sim00778 2 3,224 Aug-05-2022, 05:02 PM
Last Post: deanhystad
  working with Micropython - which ecosystem to choose - ESP 8266 or ESP 32? apollo 1 2,508 Aug-11-2019, 12:05 PM
Last Post: apollo

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020