Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι
  • Σελίδα:
  • 1
  • 2
  • 3

ΘΕΜΑ: λίγη βοήθεια εδω

λίγη βοήθεια εδω 8 Χρόνια 1 Μήνας πριν #3476

  • nora
  • Το Άβαταρ του/της nora
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 37
Η αναγνωρίσιμη μορφή ώρας αποτελείται από τα εξής μέρη:
Ώρα (0-23, σε 1 ή 2 ψηφία)
Διαχωριστής ( : ή . )
Λεπτά (0-59, πάντοτε σε 2 ψηφία)
και προαιρετικά Διαχωριστής ( : ή . )
και Δευτερόλεπτα (0-59, πάντοτε σε 2 ψηφία)

και πρεπει να αναγνωρίζει μόνο ορθές ενδείξεις..πώς ειλοποιείται αυτο?
ευχαριστώ παρα πολυ εκ των προτέρων ..
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

λίγη βοήθεια εδω 8 Χρόνια 1 Μήνας πριν #3485

  • Αποστόλης
  • Το Άβαταρ του/της Αποστόλης
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 148
  • Ληφθείσες Ευχαριστίες 24
Για αρχή πόσταρε εδώ τον κώδικα όπως τον έχεις μέσα σε code tags. Τον έκανα copy paste για να δω τι τρέχει και ασχολιόμουν μισή ώρα να βρω τα intends. Κι άκρη δε βρήκα...

Δεύτερον. Αυτό εδώ
if pos<0 or pos>=len(words):
	return None
if words[pos]==".":
	return 'DOT'
elif words[pos]>='0' and words[pos]<='9':
	return 'DIGIT'
        return 'other'
μου φαίνεται λίγο κουφό. Αν όλο μαζί είναι ένα if-eleif είναι λάθος. Εκτός κι αν φταίει το copy paste.

Τρίτον, κι εξίσου σημαντικό. ΜΗΝ γεμίζεις το forum με το ίδιο θέμα. Αν κάποιος θέλει/μπορεί να σε βοηθήσει, θα το κάνει με το πρώτο post. Αν όχι, όσο και να ποστάρεις δεν θα αλλάξει κάτι.
Τελευταία διόρθωση: 8 Χρόνια 1 Μήνας πριν από Αποστόλης.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

λίγη βοήθεια εδω 8 Χρόνια 1 Μήνας πριν #3486

  • nora
  • Το Άβαταρ του/της nora
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 37
def getchar(words,pos):
	""" epistrefei ton xarakthra ths le3hs h tipota an einai ektos oriwn """
	if pos<0 or pos>=len(words):
		return None
	if words[pos]==".":
		return 'DOT'
 
	elif words[pos]>='0' and words[pos]<='9':
		return 'DIGIT'
	return 'other'
 
 
def scan(text,transition_table,accept_states):
	"""elegxei to text otan oi metafores uparxoun sto transition_table. meta apo auto an
	mesa sthn katastash anhkei to accept_states, gurnaei kai allhlepidra me to token alliws error
	"""
 
	# arxikh katastash
	pos = 0
	state = 's0'
	lasttoken,lastpos=None,None
 
	while True:
 
		c = getchar(text,pos)	# de3ou neo xarakthra
 
		if c in transition_table[state]:
			state = transition_table[state][c]	# 8ese nea katastash
			pos += 1	# proxwra ston epomeno xarakthra
			if state in accept_states: 
				lasttoken=accept_states[state] #h teleutaia 8esh pou dexetai
				lastpos=pos # h 8esh pou brisketai twra
 
 
		else:	# kamia metabash den bre8hke
			if lasttoken is None: # an den uparxei kati pou na exoume dextei tote bgazei la8os
				return 'ERROR',pos
			else:
				return lasttoken,lastpos
 
 
# o pinakas metabashs san le3iko
td = { 'q0':{ '0,1,2':'q1', '3,4,5,6,7,8,9':'q3'},
       'q3':{ ':,.':'q4'},
       'q1':{ '0,1,2,3':'q2'},
       'q2':{ ':,.':'q4'},
       'q4':{ '0,1,2,3,4,5':'q5'},
       'q5':{ '0,1,2,3,4,5,6,7,8,9':'q6'},
       'q6':{ ':,.':'q7'},
       'q7':{ '0,1,2,3,4,5':'q8'},
       'q8':{ '0,1,2,3,4,5,6,7,8,9':'q9'}
     } 
 
# le3iko apodoxhs katastasewn kai twn antistoixwn endei3ewn tous
 
ad = { 'q6':'INT_TOKEN',
       'q9':'INT_TOKEN'
     }
 
 
# get a string from input
words = input('dwse thn wra:>')
 
# eleg3e to keimeno mexri na mhn  uparxei allo input
while len(words)>0:
	# pare thn epomenh endei3h kai th 8esh efoson o teleutaios xarakthras anagnwristei
	tok,pos = scan(words,td,ad)
	if tok=='ERROR':
		print('unrecognized input at pos',pos,'of',words)
		break
	print("token:",tok,"ERROR:",words[:pos])
	# kainourgio keimeno gia neo elegxo
	words = words[pos:]
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

λίγη βοήθεια εδω 8 Χρόνια 1 Μήνας πριν #3487

  • nora
  • Το Άβαταρ του/της nora
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 37
συγγνωμη που γεμισα το forum απλα δεν ηξερα πως λειτουργει και γι αυτο...δεν θα το ξανακανω.. εβαλα τον κωδικα οπως μου ειπεσ..τωρα μπορεις να με βοηθησεισ?
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

λίγη βοήθεια εδω 8 Χρόνια 1 Μήνας πριν #3488

  • Αποστόλης
  • Το Άβαταρ του/της Αποστόλης
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 148
  • Ληφθείσες Ευχαριστίες 24
Για αρχή άλλαξε το
words = input('dwse thn wra:>')
σε
words = str(input('dwse thn wra:>'))

Μετά, εμένα τουλάχιστον, χτυπάει στο:
state = 's0'
.
Μου βγάζει KeyError: 's0', για το οποίο δεν μπόρεσα να βρω κάποια πληροφορία.
Τι υποτίθεται οτι πρέπει να κάνει εκεί;

Υ.Γ. Το τσεκάρω σε Python2.
Τελευταία διόρθωση: 8 Χρόνια 1 Μήνας πριν από Αποστόλης.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

λίγη βοήθεια εδω 8 Χρόνια 1 Μήνας πριν #3489

  • nora
  • Το Άβαταρ του/της nora
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 37
το s0 είναι απο κει που θα ξεκινά
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

λίγη βοήθεια εδω 8 Χρόνια 1 Μήνας πριν #3490

  • nora
  • Το Άβαταρ του/της nora
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 37
εμένα σαν λαθη στο τρέξιμο μου βγάζει στα εξής:

tok,pos = scan(words,td,ad)

if c in transition_table[state]:
KeyError: 's0'
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

λίγη βοήθεια εδω 8 Χρόνια 1 Μήνας πριν #3493

  • embryo
  • Το Άβαταρ του/της embryo
  • Αποσυνδεμένος
  • pyth__
  • Δημοσιεύσεις: 92
  • Ληφθείσες Ευχαριστίες 31
Κατ' αρχάς προσπάθησα να βρω τα προβλήματα στον κώδικα σου, αλλά μου φαίνεται τρομερά περίπλοκος για αυτό που θέλει να κάνει (ή τέλος πάντων, αυτό που κατάλαβα εγώ ότι θέλει να κάνει).
Αν αυτό που θες είναι ο έλεγχος ενός κειμένου και η εκτύπωση του λάθους, τότε ίσως είναι πιο απλό να γίνει με μια σειρά if statements.
def check_text(text):
    for char in text:
        if not char.isdigit() and char not in '.:':
            print('Wrong character: "{}"'.format(char))
            return
    time = text.replace('.', ':').split(':')
    for item in time:
        if len(item) > 2:
            print('No more than 3 digits!')
            return
    if not 2 <= len(time) <= 3:
        print('No less than 2 fields!')
        return
    if int(time[0]) > 23:
        print('Hours between 0-23!')
        return
    if int(time[1]) > 59 or len(time[1]) == 1:
        print('Minutes between 0-59. Two digits!')
        return
    try:
        if int(time[2]) > 59 or len(time[2]) == 1:
            print('Seconds between 0-59. Two digits!')
            return
    except IndexError:
        pass
 
if __name__ == '__main__':
    text = raw_input('Input time: ')  # for python 3.x use input('Input time: ')
    check_text(text)
Ίσως να έχω ξεχάσει κάποια συνθήκη, αλλά είναι εύκολο να την προσθέσεις.
Αν τελικά δεν κατάλαβα καλά τι ζητάει η άσκηση σου, γράψε μου πρόσθετες πληροφορίες ...
Τελευταία διόρθωση: 8 Χρόνια 1 Μήνας πριν από embryo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

λίγη βοήθεια εδω 8 Χρόνια 1 Μήνας πριν #3494

  • nora
  • Το Άβαταρ του/της nora
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 37
Ηασκηση ειναι η εξής:
Η αναγνωρίσιμη μορφή ώρας αποτελείται από τα εξής μέρη:
i) Ώρα (0-23, σε 1 ή 2 ψηφία)
ii) Διαχωριστής ( : ή . )
iii) Λεπτά (0-59, πάντοτε σε 2 ψηφία)
και προαιρετικά
iv) Διαχωριστής ( : ή . )
v) Δευτερόλεπτα (0-59, πάντοτε σε 2 ψηφία)
Σύμφωνα με τις προδιαγραφές, θα πρέπει να αναγνωρίζονται οι εξής ενδείξεις ώρας:
23:45 ή 7.22 ή 09:08:59
αλλά όχι άκυρες ενδείξεις όπως
17:4 ή 25:12 ή 9:66
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

λίγη βοήθεια εδω 8 Χρόνια 1 Μήνας πριν #3496

  • nora
  • Το Άβαταρ του/της nora
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 37
def getchar(words,pos):
	""" epistrefei ton xarakthra ths le3hs h tipota an einai ektos oriwn """
	if pos<0 or pos>=len(words):
		return None
	if words[pos]==".":
		return 'DOT'
 
	elif words[pos]>='0' and words[pos]<='9':
		return 'DIGIT'
	return 'other'
 
 
def scan(text,transition_table,accept_states):
	"""elegxei to text otan oi metafores uparxoun sto transition_table. meta apo auto an
	mesa sthn katastash anhkei to accept_states, gurnaei kai allhlepidra me to token alliws error
	"""
 
	# arxikh katastash
	pos = 0
	state = 's0'
	lasttoken,lastpos=None,None
 
	while True:
 
		c = getchar(text,pos)	# de3ou neo xarakthra
 
		if c in transition_table[state]:
			state = transition_table[state][c]	# 8ese nea katastash
			pos += 1	# proxwra ston epomeno xarakthra
			if state in accept_states: 
				lasttoken=accept_states[state] #h teleutaia 8esh pou dexetai
				lastpos=pos # h 8esh pou brisketai twra
 
 
		else:	# kamia metabash den bre8hke
			if lasttoken is None: # an den uparxei kati pou na exoume dextei tote bgazei la8os
				return 'ERROR',pos
			else:
				return lasttoken,lastpos
 
 
# o pinakas metabashs san le3iko
td = { 'q0':{ '0,1,2':'q1', '3,4,5,6,7,8,9':'q3'},
       'q3':{ ':,.':'q4'},
       'q1':{ '0,1,2,3':'q2'},
       'q2':{ ':,.':'q4'},
       'q4':{ '0,1,2,3,4,5':'q5'},
       'q5':{ '0,1,2,3,4,5,6,7,8,9':'q6'},
       'q6':{ ':,.':'q7'},
       'q7':{ '0,1,2,3,4,5':'q8'},
       'q8':{ '0,1,2,3,4,5,6,7,8,9':'q9'}
     } 
 
# le3iko apodoxhs katastasewn kai twn antistoixwn endei3ewn tous
 
ad = { 'q6':'INT_TOKEN',
       'q9':'INT_TOKEN'
     }
 
 
# get a string from input
words = input('dwse thn wra:>')
 
# eleg3e to keimeno mexri na mhn  uparxei allo input
while len(words)>0:
	# pare thn epomenh endei3h kai th 8esh efoson o teleutaios xarakthras anagnwristei
	tok,pos = scan(words,td,ad)
	if tok=='ERROR':
		print('unrecognized input at pos',pos,'of',words)
		break
	print("token:",tok,"ERROR:",words[:pos])
	# kainourgio keimeno gia neo elegxo
	words = words[pos:]
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

λίγη βοήθεια εδω 8 Χρόνια 1 Μήνας πριν #3497

  • embryo
  • Το Άβαταρ του/της embryo
  • Αποσυνδεμένος
  • pyth__
  • Δημοσιεύσεις: 92
  • Ληφθείσες Ευχαριστίες 31
ΟΚ, άρα δουλεύει ...
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

λίγη βοήθεια εδω 8 Χρόνια 1 Μήνας πριν #3498

  • nora
  • Το Άβαταρ του/της nora
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 37
όχι δεν δουλεύει γιατί δέχεται και ακυρες ώρες και δεν δεχεται την ανωκατω τελεια
πρέπει να διαβάζει εναν εναν τον αριθμο απο την ωρα που δινει ο χρηστησ και οταν ισχυει και ειναι σωστοσ τον δεχεται να προχωρα να ελεγξει τον επομενο.. εδώ δεν γίνεται αυτό.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

λίγη βοήθεια εδω 8 Χρόνια 1 Μήνας πριν #3499

  • embryo
  • Το Άβαταρ του/της embryo
  • Αποσυνδεμένος
  • pyth__
  • Δημοσιεύσεις: 92
  • Ληφθείσες Ευχαριστίες 31
Για γράψε μου κάποια λάθος ώρα που δέχεται, να δούμε πως θα την τσεκάρεις.
Την άνω κάτω τελεία την δέχεται.
Επίσης, το πως θα πάρει τις τιμές δεν το έχεις αναφέρει.
Θεώρησα ότι θα βάλεις ένα νούμερο.
Αν θες να τσεκάρει συνέχεια, βάλτο σε κάποιο while loop.
Τελευταία διόρθωση: 8 Χρόνια 1 Μήνας πριν από embryo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

λίγη βοήθεια εδω 8 Χρόνια 1 Μήνας πριν #3502

  • Αποστόλης
  • Το Άβαταρ του/της Αποστόλης
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 148
  • Ληφθείσες Ευχαριστίες 24
Το λάθος που αναφέρεις μου βάζει κι εμένα.
if c in transition_table[state]: KeyError: 's0'.
Το οποίο 's0' μου μοιάζει για keyboard key. Ή κάνω λάθος;

Πάντως θα συμφωνήσω με embryo.
Αν βάλεις 2-3 συνθήκες ελέγχου (με isTimeFormat φαντάζομαι, ή και με regular expression αν και πιο μπερδεμένο) να περιέχει αυτά που θέλεις και να απορρίπτει οτιδήποτε άλλο, θα είναι πιο απλά τα πράγματα.
Τελευταία διόρθωση: 8 Χρόνια 1 Μήνας πριν από Αποστόλης.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

λίγη βοήθεια εδω 8 Χρόνια 1 Μήνας πριν #3505

  • nora
  • Το Άβαταρ του/της nora
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 37
το τρέχω βαζω 12.30 το δεχεται..
βάζω μετα αφου το ξανατρεχω 52 και το δεχεται(υπαρχει ωρα 52! ΟΧΙ)
βαζω 22:40 και δεν το δεχεται..
ΔΕΝ ειναι σωστος ο παραπανω τροπος γι αυτό που ζητάει η ασκηση...θα μπορουσε καποιος να μου βρει το λαθος στη δικια μου? η λογική που το χω κανει είναι η σωστή απλα κάτι μου ξεφευγει!
σασ ευχαριστω πολυ για τον χρονο σασ.. :)
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
  • Σελίδα:
  • 1
  • 2
  • 3
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.389 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου