Hi i am new in python,i have just got a question below
A friend of yours has just bought a new computer. Until now, the most powerful computer he had
ever used was a pocket calculator. Now, looking at his new computer, he is a bit disappointed,
because he liked the LC-display of his calculator so much. So you decide to write a program
that displays numbers in an LCD-like style on his computer.
Input
The input file contains several lines, one for each number to be displayed. Each line contains two
integers s and n ( 1 ≤ s ≤ 10, 0 ≤ n ≤ 99 999 999), where n is the number to be displayed and s
is the size in which it shall be displayed. The input file will be terminated by a line containing
two zeros. This line should not be processed.
Output
Output the numbers given in the input file in an LCD-style using s ‘-’ signs for the horizontal
segments and s ‘—’ signs for the vertical ones. Each digit occupies exactly s+2 columns and
2s+3 rows. (Be sure to fill all the white space occupied by the digits with blanks including the
last one.) There has to be exactly one column of blanks between two digits. Output a blank
line after each number.
Sample Input:
2 12345
3 67890
0 0
Here is my code for one input but it gives me something else

``````n=raw_input()
n=n.split(' ')
s=int(n[0])
i=0
for i in n[1]:
p=int(i)
if(p==1 or p==4):
print ' '*s,
elif(p==2 or p==3 or p==5 or p==6 or p==7 or p==8 or p==9 or p==0):
print '-'*s
for i in n[1]:
p=int(i)
if(p==1 or p==2 or p==3 or p==7):
while(i<s):
print ' '*(s-1),'|'
i+=1
i=0
elif(p==5 or p==6):
while(i<s):
print ' |'
i+=1
i=0
else:
while(i<p):
print ' |',' '*(s-1),'|'
i+=1
i=0
for i in n[1]:
p=int(i)
if(p==1 or p==0):
print ' '*s
else:
print ' -'*s
for i in n[1]:
p=int(i)
if(p==1 or p==7 or p==3 or p==4 or p==5 or p==9):
while(i<s):
print ' '*s,'|'
i+=1
i=0
else:
while(i<p):
print ' |',' '*(s-1),'|'
i+=1
i=0
for i in n[1]:
p=int(i)
if(p==1 or p==4):
print ' '*s,
elif(p==2 or p==3 or p==5 or p==6 or p==7 or p==8 or p==9 or p==0):
print '-'*s``````

Note:
Do yourself and others a favor and don't use tabs for indentations, use the usual 4 spaces instead. We have discussed that plenty of times here on the forum, there are distinct benefits.

Edited by vegaseat: added code tags

3
Contributors
2
Replies
4
Views
8 Years
Discussion Span
Last Post by pyTony

Please be more descriptive with your thread's title. It gets a little confusing with two of the same titles.

Sorry amount of red, but your code has really many problems. I did take out the tabs also by untabify, width=4.

My comments: Strange assignments to for loop variable containing the digits of number, which you are drawing.

``````n="2 12345" ## lets work out the example input first

n=n.split(' ') ## n=['2','12345']

s=int(n[0])  ## s=int('2') = 2

i=0 ## this number will be immidiately overwriten in next line

## top line of the numbers
for i in n[1]: ## i in ['12345']
p=int(i)
if(p==1 or p==4):
print ' '*s,
elif(p==2 or p==3 or p==5 or p==6 or p==7 or p==8 or p==9 or p==0):
print '-'*s

## second segment of numbers
for i in n[1]: ## again i= second number, i='0'
p=int(i)
if(p==1 or p==2 or p==3 or p==7):
while(i<s):
print ' '*(s-1),'|'
i+=1 ## never should make assignment to for loop variable !!!
i=0 ## never should make assignment to for loop variable !!!
elif(p==5 or p==6):
while(i<s):
print ' |'
i+=1 ## never should make assignment to loop variable !!!
i=0 ## never should make assignment to for loop variable !!!
else:
while(i<p):
print ' |',' '*(s-1),'|'
i+=1
i=0 ## never should make assignment to for loop variable !!!

## third segment of numbers
for i in n[1]:
p=int(i)
if(p==1 or p==0):
print ' '*s
else:
print ' -'*s

## fourth segment of numbers
for i in n[1]:
p=int(i)
if(p==1 or p==7 or p==3 or p==4 or p==5 or p==9):
while(i<s):
print ' '*s,'|'
i+=1
i=0
else:
while(i<p):
print ' |',' '*(s-1),'|'
i+=1
i=0 ## never should make assignment to for loop variable !!!

## fifth segment
for i in n[1]:
p=int(i)
if(p==1 or p==4):
print ' '*s,
elif(p==2 or p==3 or p==5 or p==6 or p==7 or p==8 or p==9 or p==0):
print '-'*s``````

The loops have assignment to loop variables. I tried to make by hand one example output, but could not match the requirements. What I missed?

``````## give this result for sample input of 2 12345
## -> Each digit occupies exactly s+2 columns and 2s+3 rows
## --> Each digit occupies exactly 4 columns and 7 rows
##  But I get 4 columns wide and 5 rows high, space between numbers not included
## By hand output for this sample input:
"""
__  __        __
|    |   | |  | |
|  __| __| |__| |__
| |      |    |    |
| |__  __|    |  __|
"""``````
This topic has been dead for over six months. 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.