거꾸로 읽어도, 제대로 읽어도, 같은 값을 보여주는 값들을 팰린드롬이라고 부릅니다. 

 

간단한 코드를 통해 Palindrome 이 아닌지 맞는지 확인해보는걸 만들 수가 있습니다

 

방법 1. 

def is_palindrome(word):
    # 여기에 코드를 작성하세요
    reversed_word = word[::-1]  # 단어를 뒤집음
    if word == reversed_word:
        return True
    else:
        return False


# 테스트 코드
print(is_palindrome("racecar"))
print(is_palindrome("stars"))
print(is_palindrome("토마토"))
print(is_palindrome("kayak"))
print(is_palindrome("hello"))

 

방법 2(코드 잇 풀이) 

def is_palindrome(word):
    for left in range(len(word) // 2):
        # 한 쌍이라도 일치하지 않으면 바로 False를 리턴하고 함수를 끝냄
        right = len(word) - left - 1
        if word[left] != word[right]:
            return False

    # for문에서 나왔다면 모든 쌍이 일치
    return True


# 테스트 코드
print(is_palindrome("racecar"))
print(is_palindrome("stars"))
print(is_palindrome("토마토"))
print(is_palindrome("kayak"))
print(is_palindrome("hello"))

 

코드에는 정답이 없습니다. 각자만의 풀이 방법이 있을 뿐이에요.

어떤 방법이던 본인의 정답을 사랑해주시길 

Luhn Algorithm (youtube.com)

 

일단 나보다 설명을 잘하는 인도아저씨가 나타나 설명을 해주고 있어요

요약


1. Starting from the rightmost digit (the check digit), double the value of every second digit.
2. If doubling a digit results in a number greater than 9, subtract 9 from the product.
3. Sum up all the digits.If the total sum is divisible evenly by 10, then the number is valid according to the Luhn algorithm.


파이썬 코드

 

def verify_card_number(card_number):
    sum_of_odd_digits = 0
    card_number_reversed = card_number[::-1]
    odd_digits = card_number_reversed[::2]

    for digit in odd_digits:
        sum_of_odd_digits += int(digit)

    sum_of_even_digits = 0
    even_digits = card_number_reversed[1::2]
    for digit in even_digits:
        number = int(digit) * 2
        if number >= 10:
            number = (number // 10) + (number % 10)
        sum_of_even_digits += number
    total = sum_of_odd_digits + sum_of_even_digit
    return total % 10 == 0

def main():
    card_number = '4111-1111-4555-1141'
    card_translation = str.maketrans({'-': '', ' ': ''})
    translated_card_number = card_number.translate(card_translation)

    if verify_card_number(translated_card_number):
        print('VALID!')
    else:
        print('INVALID!')

main()

 

리스트와 딕셔너리의 활용으로 만들어진 알고리즘 풀이

 

 

감상평: 

 

프로그래밍은 수학을 잘하냐 잘 못하느냐가 아니라 문제를 보고 어떻게 식을 만들고 활용하는 영역인거 같음.

 

 

여기서 작성한 코드를 몇개 비공개 처리 해야할거 같아요 ! 

 

아무래도 과제를 워드 파일로 작성해서 공유하게 되는데, 

 

거기서 표절 검사를 하는 프로그램에 온라인 데이타 베이스에 파일이 존재하냐 안하냐를 한번 더 확인하는 과정이 있거든요

 

ㅋㅋ;;; 나쁘지 않게 하고는 있습니다 . 

 

내일은 에세이 작성에 힘을 줘야될거같아서 오늘은 여기까지! 

 

class Labotory:
    def __init__(self, name, number, origin):
        self.name = name
        self.number = number
        self.origin = origin

    def __str__(self):
        return f'My name is {self.name} and from {self.origin}'


Labomen1 = Labotory("Okabe_rintarou", "001", "Japan")
Labomen2 = Labotory("Shiina_Mayuuri", "002", "Japan")
Labomen3 = Labotory("Hashida_itarrum", "003", "Japan")
Labomen4 = Labotory("Makise_Kurisu","004", "America" )
Labomen5 = Labotory("Kiryu_moeka", "005", "Spoiler")
Labomen6 = Labotory("Urushibara_ruka","006", "Japan")
Labomen7 = Labotory("Feiris_nyannyan","007","Japan")
Labomen8 = Labotory("Amane_Suzuha","008", "Spoiler")
Labomen9 = Labotory("Hiyajou_maho","009","Spoiler")

#이렇게 설정 함으로써, print(Labomen1) 은 자기 소개를 할거에요!

lab_members = [Labomen1, Labomen2, Labomen3, Labomen4, Labomen5, Labomen6, Labomen7, Labomen8, Labomen9]

#언제사용할지 모르는 Labomen 들을 일단 리스트에 넣어둡니다.
class Microwave:
    def __init__(self):
        self.is_on = False
        self.messages = []

    def turn_on(self):
        self.is_on = True
        print("Microwave is now on")

    def turn_off(self):
        self.is_on = False
        print("Microwave is now off")


    def receive_message(self, lab, message):
        if self.is_on:
            print(f"Microwave received message from {lab.name}: {message}")
            self.messages.append(message)
        else:
            print("Nothing has happened")

    def message_inbox(self):
        self.messages
#전화레인지 가칭을 만들어줄게요!

class CrtTv:
    def __init__(self):
        self.is_on = False
        self.turn_on_count = 0

    def turn_on(self):
        self.is_on = True
        self.turn_on_count +=1
        print("The CRT TV is now on")

        #What if TV is too much repeatly on
        if self.turn_on_count >= 5 :
            print("Someone is mad, and he turned off the TV")
            self.turn_off()

    def turn_off(self):
        self.is_on = False
        print("The CRT TV is now off")

    def negotiation(self):
        print("Someone made a negotiation with him")
        self.turn_on_count = 0
#그리고 TV를 만들어줍니다
class DivergenceMeter:
    def __init__(self):
        self.current_divergent_value = 0.571040
        self.divergent_value_log = [self.current_divergent_value]

    def status(self):
        print(self.current_divergent_value)

    def change_value(self):
        self.current_divergent_value += 0.003
        print(f"Divergence Meter changed to {self.current_divergent_value}")
        self.divergent_value_log.append(self.current_divergent_value)
   
 #이제 게임 스토리를 만들 차례에요    
class GameStory:
    def __init__(self, lab_members, microwave, crt_tv, divergence_meter):
        self.lab_members = lab_members
        self.microwave = microwave
        self.crt_tv = crt_tv
        self.divergence_meter = divergence_meter

    def send_message_to_change_divergence_meter(self, messages):
        if self.microwave.is_on and self.crt_tv.is_on:
            for sender, message in messages.items():
                print(f"{sender.name}: {message}")
                self.microwave.receive_message(sender, message)
                self.divergence_meter.change_value()
        else:
            print("Seems like nothing has changed.....")

    def show_the_divergence_meter_history(self):
        print("Divergence meter history:")
        print(f'History: {self.divergence_meter.current_divergent_value}')
        for value in self.divergence_meter.divergent_value_log:
            print(value)

#각 객체의 특성을 받는 것을 만듬
microwave = Microwave()
crt_tv = CrtTv()
divergence_meter = DivergenceMeter()
game_story = GameStory(lab_members, microwave, crt_tv, divergence_meter)

while True:
    print("Options")
    print("1. Send a message through the microwave")
    print("2. Turn on/off the TV")
    print("3. Turn on/off the Microwave")
    print("4. Check Divergent Meter")
    print("5. Exit Game")

    choice = input("What will I do next? ")

    if choice == '1':
        print("To whom?")

        lab_choice = int(input("Enter the number of the lab member: "))

        if 1 <= lab_choice <= len(lab_members):
            selected_lab_member = lab_members[lab_choice - 1]

            if selected_lab_member.origin == 'Spoiler':
                print("Sorry, you cannot choose a lab member with origin 'Spoiler'.")
            else:
                print(selected_lab_member)
        else:
            print("Invalid lab member choice")

    elif choice == '2':
        if crt_tv.is_on:
            crt_tv.turn_off()
        else:
            crt_tv.turn_on()

    elif choice == '3':
        if microwave.is_on:
            microwave.turn_off()
        else:
            microwave.turn_on()

    elif choice == '4':
        divergence_meter.status()
        user_input = input("Would you like to see the previous log? (Y/N): ")
        if user_input.upper() == 'Y':
            print(divergence_meter.divergent_value_log)
        else:
            print("Unfortunate!")

    elif choice == '5':
        print("Exiting the game.")
        break

    else:
        print("That's not an option")

영어 에세이를 적는 원칙중에, 모든 글은 쉽게 쓰는 방법이 있으면 그렇게 써야한다 원칙이 있습니다.

코딩도 비슷한 원칙을 갖고있습니다. 

어제 밤에 블로그 포스팅을 하고 오늘 아침에 내가 한 코드를 봤었는데요.

 

너무 부족한 부분이 많이 보여서 

다시 수정을 했어요, 왜 당장 처음할때는 보이지 않았던 문제들이 이제와서 보이는건지 참 .... 

 

class Labotory:
    def __init__(self, name, Idnumber, origin):
        self.name = name
        self.number = Idnumber
        self.origin = origin
     
    def introduce(self):  # Corrected method name from lntroduce to introduce
        print(f'My name is {self.name} and from {self.origin}')

   
Labomen = [Labotory("Okabe_rintarou", "001", "Japan"),
           Labotory("Shiina_Mayuuri", "002", "Japan")]
           

class Microwave:
    def __init__(self):
        self.is_on = False
        self.messages = []  # Added messages attribute

    def turn_on(self):
        self.is_on = True
        print("Microwave is now on")

    def turn_off(self):
        self.is_on = False
        print("Microwave is now off")
   
    def receive_message(self, sender, message):
        print(f"{self.__class__.__name__} received message from {sender.name}: {message}")
        self.messages.append(message)

class CrtTv:
    def __init__(self):
        self.is_on = False
   
    def turn_on(self):
        self.is_on = True
        print("The CRT TV is now on")

    def turn_off(self):
        self.is_on = False
        print("The CRT TV is now off")

class DivergenceMeter:
    def __init__(self):
        self.current_divergent_value = 0.571040
        self.divergent_value_log = []

    def change_value(self):
        self.current_divergent_value += 0.003
        print(f"Divergence Meter changed to {self.current_divergent_value}")
        self.divergent_value_log.append(self.current_divergent_value)

class GameStory:
    def __init__(self, labomen, microwave, crt_tv, divergence_meter):
        self.labomen = labomen
        self.microwave = microwave
        self.crt_tv = crt_tv
        self.divergence_meter = divergence_meter

    def send_message_to_change_divergence_meter(self):
        if self.microwave.is_on and self.crt_tv.is_on:
            print(f"{self.labomen.name}: I want to change the world")
            message = "elp, psy, kongoroo"
            self.microwave.receive_message(self.labomen, message)
            self.divergence_meter.receive_message(self.labomen, message)
            self.divergence_meter.change_value()
        else:
            print("Seems like nothing has changed.....")
   
    def show_the_divergence_meter_history(self):
        print("Divergence meter history:")
        for value in self.divergence_meter.divergent_value_log:
            print(value)

# Create instances
microwave = Microwave()
crt_tv = CrtTv()
divergence_meter = DivergenceMeter()

# Instantiate GameStory with the first Labotory instance
game_story = GameStory(Labomen[0], microwave, crt_tv, divergence_meter)

# Call the method on the GameStory instance
game_story.send_message_to_change_divergence_meter()

# Show the divergence meter history
game_story.show_the_divergence_meter_history()

#Let's make it happen

microwave.is_on()
crt_tv.is_on()
game_story.send_message_to_change_divergence_meter()

+ Recent posts