Pythonベース#4
24.文字列&リストの問題
06.身分証明書番号を隠す
身分証明書番号YMMDD-Abcdefgは全部で13桁です
身分証明書番号の最後の4桁のdefgだけを隠すセキュリティプログラムを作成したいです.
mask security numberという関数を定義します.この関数は、パラメータがsecurity numberの文字列を受信し、security numberの最後の4文字を「」で置換する新しい文字列を返します.
パラメータsecurity numberには、ワークベンチシンボル(-)が含まれていてもよいことに注意してください.棒が含まれているかどうかにかかわらず、最後の4文字は「」に置き換えなければなりません.
ファリン症候群を患っているかどうかを確認するために、関数
例えば、
1)関数ファイルの読み込み
1.randint関数
2.一致関数
datetimeモジュール
ex)
日付値間の期間
26.Input&randomデジタルクイズゲーム
strip
前後のスペースを削除します.
ex)
すべてのスペースを削除
ex)
文字列の分割
ex) my_string = "1. 2. 3. 4. 5. 6"
print(my_string.split(". "))
注意する.Splitを使用した結果値は常に文字列!!
に質問平均売上高を求める.
chicken.txtファイルには以下のような売上高が記録されている.平均売上高を求める.
06.身分証明書番号を隠す
身分証明書番号YMMDD-Abcdefgは全部で13桁です
身分証明書番号の最後の4桁のdefgだけを隠すセキュリティプログラムを作成したいです.
mask security numberという関数を定義します.この関数は、パラメータがsecurity numberの文字列を受信し、security numberの最後の4文字を「」で置換する新しい文字列を返します.
パラメータsecurity numberには、ワークベンチシンボル(-)が含まれていてもよいことに注意してください.棒が含まれているかどうかにかかわらず、最後の4文字は「」に置き換えなければなりません.
#접근법 #1
def mask_security_number(security_number):
# security_number를 리스트로 변환
num_list = list(security_number)
# 마지막 네 값을 *로 대체
for i in range(len(num_list) - 4, len(num_list)):
num_list[i] = "*"
# 리스트를 문자열로 복구
total_str = ""
for i in range(len(num_list)):
total_str += num_list[i]
return total_str
-------------------------------------------
# 접근법 #2
# join() method 사용 -> 문자열로 이루어진 리스트를 구분자로 결합, 하나의 문자열로 만듬
def mask_security_number(security_number):
num_list = list(security_number)
# 마지막 네 값을 *로 대체
for i in range(len(num_list) - 4, len(num_list)):
num_list[i] = '*'
# 리스트를 문자열로 복구하여 반환
return ''.join(num_list)
--------------------------------------------
# 접근법 #3
# 문자열 슬라이싱
def mask_security_number(security_number):
return security_number[:-4] + '****'
07.ファリン・ドロンファリン症候群を患っているかどうかを確認するために、関数
is_palindrome
を書きます.is_palindrome
はパラメータword
、パリンドロンであればTrue
、パリンドロンでなければFalse
を返します.例えば、
"racecar"
および"토마토"
は、逆読み可能であるため、True
を出力しなければならない.そして"hello"
を逆さまに読むと"olleh"
になるのでFalse
に出ます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
-----------------------------------------------
// 문자열 & 리스트 뒤집기
def is_palindrome(word):
return word == word[::-1]
25. Module1)関数ファイルの読み込み
import moduleFileName
or import moduleFileName as nickname
ex) import numpy as np
import pandas as pd
muduleFileName.function()
2)関数ファイルの特定の関数を読み込むfrom moduleFileName import function1, function2
or from moduleFileName import * (출처가 불분명하여 사용 자제)
3) Standard libraryimport math
import os
ランダムモジュールimport random
1.randint関数
randint
:2つの数の間の任意の整数の関数を返します.randint(a, b)
μa≦N≦bを満たす任意の整数Nを返す.2.一致関数
uniform
:2つの数の間のランダム小数の関数を返します.randint
と異なり、戻り値は整数の小数ではありません.uniform(a, b)
χa≦N≦bを満たす任意の小数Nを返す.datetimeモジュール
import datetime
「日付」と「時間」を持つ様々な「クラス」.ex)
pi_day = datetime.datetime(2020, 3, 14, 13, 6, 15)
print(pi_day)
print(type(pi_day))
>>>
2020-03-14 13:06:15
<class 'datetime.datetime'>
오늘 날짜
today = datetime.datetime.now()
print(today)
print(type(today))
timedelta日付値間の期間
today = datetime.datetime.now()
pi_day = datetime.datetime(2020, 3, 14, 13, 6, 15)
print(today - pi_day)
print(type(today - pi_day))
>>>
22 days, 4:42:57.360266
<class 'datetime.timedelta'>
その他today = datetime.datetime.now()
my_timedelta = datetime.timedelta(days=5, hours=3, minutes=10, seconds=50)
print(today)
print(today + my_timedelta)
>>>
2020-04-05 17:54:24.221660
2020-04-10 21:05:14.221660
datetimeから特定の値を抽出するtoday = datetime.datetime.now()
print(today)
print(today.year) # 연도
print(today.month) # 월
print(today.day) # 일
print(today.hour) # 시
print(today.minute) # 분
print(today.second) # 초
print(today.microsecond) # 마이크로초
フォーマットdatetimetoday = datetime.datetime.now()
print(today)
print(today.strftime("%A, %B %dth %Y"))
>>>
2020-04-05 18:09:55.233501
Sunday, April 05th 2020
書式コード 26.Input&randomデジタルクイズゲーム
import random
# 코드를 작성하세요.
correct_answer = random.randint(1, 20)
chance = 4
attempt = 0
user_answer = -1
while user_answer != correct_answer and attempt < chance:
user_answer = int(input("기회가 {}번 남았습니다. 1-20 사이의 숫자를 맞혀 보세요: ".format(chance-attempt)))
attempt += 1
if user_answer > correct_answer:
print("Down")
elif user_answer < correct_answer:
print("Up")
if user_answer == correct_answer:
print("축하합니다. {}번 만에 숫자를 맞히셨습니다.".format(attempt))
else:
print("아쉽습니다. 정답은 {}입니다.".format(correct_answer))
27.ファイルの読み書きwith open('fileName.txt', 'r') as f:
//open(「ファイルパス」,「読み出しモード」)と変数「f」に格納print(type(f))
<class '_io.TextIOWrapper'>
改行n注意.strip
前後のスペースを削除します.
ex)
print(" abc def ".strip())
abc def
replaceすべてのスペースを削除
ex)
print(" abc def ".replace(" ", ""))
abc def
split文字列の分割
ex) my_string = "1. 2. 3. 4. 5. 6"
print(my_string.split(". "))
注意する.Splitを使用した結果値は常に文字列!!
に質問平均売上高を求める.
chicken.txtファイルには以下のような売上高が記録されている.平均売上高を求める.
1일: 453400
2일: 388600
.
.
.
30일: 385600
31일: 472300
with open('data/chicken.txt', 'r') as f:
total_revenue = 0
total_days = 0
for line in f:
data = line.strip().split(': ')
revenue = int(data[1])
total_revenue += revenue
total_days += 1
print(total_revenue / total_days)
書き込みwith open('new_file.txt', 'w') as f:
f.write("Hello world!\n")
f.write("My name is Yong Lee\n")
with open('new_file.txt', 'a') as f: // a: append 추가
f.write("Hello world!\n")
f.write("My name is Yong Lee\n")
// 단어장 만들기
with open('vocabulary.txt', 'w') as f:
while True:
english_word = input('영어 단어를 입력하세요: ')
if english_word == 'q':
break
korean_word = input('한국어 뜻을 입력하세요: ')
if korean_word == 'q':
break
f.write('{}: {}\n'.format(english_word, korean_word))
//단어장 2. 퀴즈
with open('vocabulary.txt', 'r') as f:
for line in f:
data = line.strip().split(": ")
english_word, korean_word = data[0], data[1]
# 유저 입력값 받기
guess = input("{}: ".format(korean_word))
# 정답 확인하기
if guess == english_word:
print("정답입니다!\n")
else:
print("아쉽습니다. 정답은 {}입니다.\n".format(english_word))
//단어장 3. 고급
import random
# 사전 만들기
vocab = {}
with open('vocabulary.txt', 'r') as f:
for line in f:
data = line.strip().split(": ")
english_word, korean_word = data[0], data[1]
vocab[english_word] = korean_word
# 목록 가져오기
keys = list(vocab.keys())
# 문제 내기
while True:
# 랜덤한 문제 받아오기
index = random.randint(0, len(keys) - 1)
english_word = keys[index]
korean_word = vocab[english_word]
# 유저 입력값 받기
guess = input("{}: ".format(korean_word))
# 프로그램 끝내기
if guess == 'q':
break
# 정답 확인하기
if guess == english_word:
print("정답입니다!\n")
else:
print("아쉽습니다. 정답은 {}입니다.\n".format(english_word))
Reference
この問題について(Pythonベース#4), 我々は、より多くの情報をここで見つけました https://velog.io/@nogy21/python-기초-4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol