# 本ソースコードは、あくまで、Pythonの学習用・練習材料として提供するものです。
# 一通りデバグしてありますが、動作を保証するものではありません。
# デバグが完璧ではなく、データの破損などが起こりえますが、瑕疵責任は負いません。
# 著作権は(有)りるらるが保持しますが、自由に改造・改良してお使いください。
import webbrowser
import sys
import os
import glob
import math
from datetime import datetime as dt
from tkinter import *
from tkinter import ttk
# テスト・プログラム
import keyword
print("キーワード一覧")
print(keyword.kwlist)
print(ord("〒"))
# ExceptionクラスのサブクラスCheckErrorを定義します。
class CheckError(Exception):
    pass
class myclass:
    e1 = []
    def __init__(self, s1):
        self.name = s1
        self.e2 = []
    def mymethod(self, s2):
        self.e2.append(s2)
        return len(self.e2)
    def dispname(self):
        print("名前は:", self.name)
class Person:
    def __init__(self, name, addr, postcode):
        self.name = name
        self.addr = addr
        self.postcode = postcode
        self._post = ""
    def posta(self, aa):
        self._post = chr(12306) + self.postcode + chr(13) + chr(10) + self.addr + chr(13) + chr(10) + "  " + self.name + aa
    def postb(self):
        return self._post
    @property
    def post(self):
        return self._post
    @post.setter
    def post(self, aa):
        self._post = chr(12306) + self.postcode + chr(13) + chr(10) + self.addr + chr(13) + chr(10) + "  " + self.name + aa
def crlf(str):
    return str + '\n'
def selectval(data1):
    return data1>75
x1 = 0.0
def sc_prod(a):
    b= a*x1
    return b
def v_prod(a, b):
    c = a * b
    return c
# pythonの基本
# まず、関数を定義します。
def subp(a, b, c):
    print("c = a + b =", a, "+", b, "=", c)
a = 2  # 変数aに整数2を代入
b = 3  # 変数bに整数3を代入
c = a + b  # 変数aの内容と変数bの内容を加えて変数cに代入
print("c = a + b =", a, "+", b, "=", c)  # 結果を表示
a = 2.7
b = 3.91
c = a + b
print("c = a + b =", a, "+", b, "=", c)
cflag = True  # 変数cflagに論理値Trueを代入
if cflag:  # ifの右がTrueなら次の行を実行
    print("cflag:", cflag, "なので、処理を行います")
    while cflag:  # whileの右がTrueなら次の行を実行
        a = float(input("数値入力(やめたいときは0):"))
        if a == 0:
            break  # a=0のときここにきてbreakすると、whileループを抜ける
        else:  # a=0でないときは次の行を実行
            b = float(input("数値入力(やめたいときは0):"))
            if b != 0:
                c = a + b  # bが0以外の時は、ここにくる
                print("c = a + b =", a, "+", b, "=", c)
                continue  # whileループの先頭に戻りループの次の回に行く
            else:
                cflag = False  # b=0のときcflagをFalseにする
            print("実行されるかな(1)?")
        print("実行されるかな(2)?")
    print("実行されるかな(3)?")
k = 0  # whileとifを終了するとここに来て、kをあらかじめ0にする
for j in range(3):  # rangeオブジェクトから0, 1, 2が取り出される
    k += j  # kにjを加えてkに入れる。
    print("j:", j, ", k:", k)  # jとkを表示
    s1 = input("何か入力")
    if s1 == 'e':
        break
a = int(input("整数値入力a:"))  # int関数で文字列を整数値に変換
b = int(input("整数値入力b:"))
c = a + b
subp(a, b, c)  # 一々printを書くのが面倒なので関数を呼び出す
x = float(input("数値入力a:"))  # float関数で文字列を実数値に変換
y = float(input("数値入力b:"))
z = x + y
subp(x, y, z)  # 引数x, y, zが関数subpのa, b, cに割り当てられる。
s1 = input("基本チェックを終了します。何か入力してください。")            
# global変数の確認
abc = 0
def func1():
    global abc
    abc = 1
    return
def func2():
    abc = 2
    return
def func3():
    x = 1.1
    y = 2.3
    print(locals())
    return
# 論理型の確認
b1 = True
b2 = False
print("b1:", b1, ", b2:", b2)  # 論理型の出力
breakpoint()

# mutable, immutableの確認
print("b1のid:", hex(id(b1)))
b1 = not(b1)
print("b1のid:", hex(id(b1)))
j1 = 1
print("j1のid:", hex(id(j1)))
j1 = j1 + 2
print("j1のid:",hex(id(j1)))
s1 = "test"
print("s1のid:", hex(id(s1)))
s1 = s1 + "123"
print("s1のid:", hex(id(s1)))
t1 = ('a', 'b', 'c')
print("t1のid:", hex(id(t1)))
t1 = ('d', 'e')
print("t1のid:", hex(id(t1)))
e1 = []
print("e1のid:", hex(id(e1)))
e1.append("test1")
print("e1のid:",hex(id(e1)), ", e1[0]のid:", hex(id(e1[0])))
e1.append("test2")
print("e1のid:", hex(id(e1)), ", e1[0]のid:", hex(id(e1[0])), "e1[1]のid:",
hex(id(e1[1])))
e1[0] = "test123"
e1[1] = "a"
print("e1のid:", hex(id(e1)), ", e1[0]のid:", hex(id(e1[0])), "e1[1]のid:",
hex(id(e1[1])))

# if文とwhile文の確認
# while文
while b1:
# 整数型のプロンプト付き入力
    j1 = input("整数値j1:")
    j2 = input("整数値j2:")
# if文、else文
    if j1 == j2:  # 整数型の比較、等しい場合
        print("j1:", j1, "= j2:", j2)
    else:  # 等しくない場合
        print("j1:", j1, "!= j2:", j2)
    s1 = input("whileループを終了しますか?(y or n)")
    if s1[0] == "y":
        b1 = False  # whileループを抜ける
print("continue文の確認")
n1 = 1
b1 = True
while b1:
    print("n1:", n1)
    n1 += 1
    if n1<3:
        continue
    else:
        b1 = False
print("break文の確認")
n1 = 1
b1 = True
while b1:
    print("n1:", n1)
    n1 += 1
    if n1<3:
        continue
    else:
        break
pass
# リスト
c1 = [ "orange", "apple", "peach" ]
c2 = [ 1, 2 ]
# forループ、リストから1つずつ取り出して表示
print("forループの確認")
for e1 in c1:
    print(e1)
    for n1 in c2:
        print(n1)
# インスタンス生成の確認
m1 = myclass("abcd")
len1 = m1.mymethod("information1")
print("len1:", len1, "m1.name:", m1.name, "m1.e2[0]:", m1.e2[0])
print("func1の前 abc =", abc)
func1()
print("func1の後 abc =", abc)
func2()
print("func2の後 abc =", abc)
m1.dispname()
# サブクラス生成の確認
class childclass(myclass):
    def __init__(self, name):
        super().__init__(name)
        self.name2 = "★" + self.name
    def childmethod(self):
        super().dispname()
        print("サブクラスのname:", self.name2)
m2 = childclass("efghij")
m2.childmethod()
myclass.e1.append("apple")
print(myclass.e1)
# match文の確認
while True:
    j1 = int(input("整数値を入力してください:"))
    match j1:
        case 1:
            print("1です")
        case 2:
            print("2です")
        case 3:
            print("3です")
        case _:
            print("その他です。")
            break  # その他の入力でwhileループを抜ける。
while True:
    str1 = input("文字列の入力:")
    match str1:
        case "a":
            print("aです。")
        case "bc":
            print("bcです。")
        case str1 if len(str1)>2:
            print("3文字以上です。")
        case _:
            print("その他です。")  # その他の入力でwhileループを抜ける。
            break
p1 = Person("井上三郎", "東京都文京区山内町3-10-12", "119-3679")
p1.posta("様")
# postaddr1 = ""
postaddr1 = p1.postb()
print(postaddr1)
# @propertyの利用
print("@propertyを利用します")
p1.post = "様"
print(p1.post)
# リスト関係のメソッドの確認
e1 = [ 1, 2, 3 ]
e1.append(5)
print(e1)
e2 = [ "abc", "de", "f" ]
e2.append("kpx")
print(e2)
e1.extend((10, 11, 12))
print("e1:", e1)
e2.insert(2, "ghi")
print("e2:", e2)
print("e1中の11のindexは", e1.index(11))
print("e2中のdeのindexは", e2.index("de"))
e2.reverse()
print("e2を反転したリスト:", e2)
e2.sort()
print("e2をソートしたリスト:", e2)
e2.append("de")
print("e2:", e2)
print("e2中のdeの個数は", e2.count("de"))
e2.remove("ghi")
print("e2中のghiを削除したリスト", e2)
e1.clear()
print("clear後のe1:", e1)
print("e2からfをpop", e2.pop(2), "pop後のe2:", e2)
e3 = e2.copy()
print("e2からcopyされたe3:", e3)
e1 = list(range(4))
print("3 in e1:", 3 in e1)
print("range(4):", e1)
e1 = list(range(3,6))
print("3 in e1:", 3 in e1)
print("range(3,6):", e1)
e1 = list(range(9, 0, -3))
print("0 in e1:", 0 in e1)
print("range(9, 0, -3):", e1)
str1 = "abcdefghij"
print("元の文字列:", str1)
s1 = slice(3, 7, 2)
print("slice(3, 7, 2):", str1[s1])
s1 = slice(4, 5)
print("slice(4, 5):", str1[s1])
s1 = slice(4)
print("slice(3):", str1[s1])

# len関数のテスト
str1 = "abcdefg"
print("str1:", str1, ",len(str1):", len(str1))
e1 = [1, 2, 3, 4, 5]
print("e1:", e1, ",len(e1):", len(e1))

print("input():", callable(input))
print("print():", callable(print))
print("class myclass:", callable(myclass))
print("list():", callable(list))
print("open():", callable(open))
print("e1:", callable(e1))
d1 = globals()
# print(d1)
print("j1=", j1)
d1['j1'] = 15
print("j1=", j1)
help(print)
help(j1)
help()
func3()
# with文のテスト
with(open("C:\\python\\testpro\\data1.txt", 'r') as f1,
     open("C:\\python\\testpro\\data2.txt", 'w') as f2,
):
    str1 = f1.read()
    print(str1)
    f2.write(str1)
# 例外処理のテスト
e1 = [2, 5, 0, 1]
for j1 in e1:
    try:
        j2 = 10 / j1
        print("10÷", j1, "=", j2)
    except ZeroDivisionError:
            print("0で割ることはできません。")
    else:
        print("割り算成功")
    finally:
        print("次に進みます")
print("assert文で異常データ検出")
for j1 in e1:
    print("j1:", j1)
    try:
        assert j1 < 5
    except AssertionError:
        print("異常データ検出")
print("raise文で異常データ検出")
for j1 in e1:
    print("j1:", j1)
    if j1 > 4:
        try:
            raise CheckError("異常データ検出")
        except CheckError as e:
            print(e)
    else:
        continue

# global変数のチェック
del x
import test3 as x
mes1 = "local"
print("mes1:", mes1, "x.mes1:", x.mes1)
xwidth = 123
x.xwidth = 300
print("xwidth:", xwidth, "x.xwidth:", x.xwidth, "x.yheight:", x.yheight)
try:
    print("yheight:", yheight)
except NameError:
    print("NameError発生!yheightは定義されていません。")
try:
    glfunc(123, 456)
except NameError:
    print("NameError発生!glfuncは定義されていません。")
    x.glfunc(123, 456)
print("x.xwidth:", x.xwidth, "x.yheight:", x.yheight)
try:
    print("user:", user)
except:
    print("NameError発生!userは定義されていません。")
    print("x.user:", x.user)
    x.user.append("Mary")
    print("Maryが追加されました。x.user:", x.user)
gl1 = x.glclass()
print(gl1.reg("apple"), "番目の登録")
print(gl1.reg("orange"), "番目の登録")
gl1.disp()

str1 = input("何かキーを押す")

print("abs(-17)は、", abs(-17))
print("math.fabs(-3.14)は、", math.fabs(-3.14))
j1, j2 = divmod(17, 6)
print("17÷6の商は、", j1, ",余りは、", j2)
e1 = [14, 27, 23, 49, 31, 19, 36]
print("最大値は、", max(e1))
print("最小値は、", min(e1))
print("eのπ乗は、", pow(math.e, math.pi))
print("2の7乗を11で割った余りは、", pow(2, 7, 11))
x1 = 3.1415926583
print(x1, "を整数に丸めると", round(x1))
print(x1, "を小数第2位までに丸めると", round(x1,2))
print(x1, "を小数第6位までに丸めると", round(x1,6))
print(e1, "の合計は", sum(e1))
str1 = "a1あい愛"
print(str1, "をascii関数で変換", ascii(str1))
print(str1[0], str1[1], "をascii関数で変換", ascii(str1[0]), ascii(str1[1]))
j1, j2, j3 = 1, 109, 255
print("bin関数のテスト", j1, bin(j1), j2, bin(j2), j3, bin(j3))
print("bytearray関数のテスト")
e1 = bytearray(str1, 'utf-8')
print(str1, "をbytearray関数で変換", e1)
e1 = [1, 109, 255]
e2 = bytearray(e1)
print(e1, e2)
print("bytes関数のテスト")
print(str1, "をbytes関数で変換", bytes(str1, encoding='utf-8'))
e2 = bytes(e1)
print(e1, e2)

print(ord('あ'), ord('い'), ord('愛'))

print("chr関数のテスト")
str2 = chr(0x41) + chr(0x31) + chr(0x3042) + chr(0x3044) + chr(0x611b)
print(str2)
print("dict関数のテスト")
d1 = dict(key1='abc', key2='def')
print("辞書d1:", d1)
d2 = dict([('key1', 'ghi'), ('key2', 'jkl')])
print("辞書d2:", d2)
print("filter関数のテスト")
e1 = [62, 38, 77, 91, 63, 88, 54]
e2 = list(filter(selectval, e1))
print(e1, "の中で75より大きいもの:", e2)
print("format関数のテスト")
j1 = 123
j2 = -123
print("左寄せ16桁バイナリ", format(j1, "<16b"))
print("中央16桁バイナリ", format(j1, "^16b"))
print("右寄せ16桁バイナリ", format(j1, ">16b"))
print("16桁整数(負のみマイナス付き)", format(j1, "16d"))
print("16桁整数(負のみマイナス付き)", format(j2, "16d"))
print("16桁整数+付き", format(j1, "+16d"))
print("16桁整数+付き", format(j2, "+16d"))
j3 = 12345678
print("16桁整数", format(j3, "16d"))
print("16桁整数(0埋め)", format(j3, "016d"))
print("16桁整数(右寄せカンマ付き)", format(j3, ">16,d"))
print("16桁整数(指数表示)", format(j3, "16e"))
g1 = 123.45678
print("実数表示", format(g1, "16f"))
print("小数点以下2桁実数表示", format(g1, ".2f"))
print("右詰小数点以下2桁実数表示", format(g1, ">16.2f"))
# f文字列による書式制御
print("f文字列による表示", f"{g1:>16.2f}")
# %書式による書式制御
print("名前:%(name)s, 価格:%(price)d円" % {"name":"apple", "price":320})
print("%方式による表示", "%16.2f" % 123.45678)

print("右詰小数点以下2桁指数表示", format(g1, ">16.2e"))
str1 = "いろはにほへと"
str2 = "abc"
str3 = "ちりぬるを"
str4 = "defghij"
print("左寄せ8桁文字列", format(str1, " <8s"), "|", format(str2, " <8s"))
print("左寄せ8桁文字列", format(str3, " <8s"), "|",  format(str4, " <8s"))
print("中央8桁文字列", format(str1, " ^8s"), "|",  format(str2, " ^8s"))
print("中央8桁文字列", format(str3, " ^8s"), "|",  format(str4, " ^8s"))
print("右寄せ8桁文字列", format(str1, " >8s"), "|",  format(str2, " >8s"))
print("右寄せ8桁文字列", format(str3, " >8s"), "|",  format(str4, " >8s"))
print("左寄せ8桁文字列(*埋め)", format(str1, "*<8s"), "|",  format(str2, "*<8s"))
print("左寄せ8桁文字列(*埋め)", format(str3, "*<8s"), "|",  format(str4, "*<8s"))

print("formatメソッドのテスト")
j1 = 23
j2 = 71
j3 = j1 + j2
print("{}+{}={}".format(j1, j2, j3))
print("{1}+{2}={0}".format(j3, j1, j2))
print("{third}+{first}={second}".format(first=j2, second=j3, third=j1))

d3 = {'name': 'apple', 'price': 320}
d4 = {'name': 'orange', 'price': 80}
d5 = {'name': 'peach', 'price': 430}
fruits = [d3, d4, d5]
for d6 in fruits:
    print("名前:{0[name]:<8s} 価格:{0[price]:>4d}円".format(d6))
g3 = 12345678.345
print("16桁浮動小数点以下2桁カンマ付き {:*>+16,.2f}".format(g3))
print("10桁整数16進表示接頭辞付き {:>#010X}".format(j3))

print("frozenset関数, zip関数, dict関数のテスト")
keylist = frozenset(['key1', 'key2', 'key3'])
datalist = [1, 2, 3]
d1 = dict(zip(keylist, datalist))
print("辞書の表示", d1)
j1 = 42940
print("hex関数のテスト,j1:", j1, hex(j1))

print("enumerate関数のテスト")
array = ['apple', 'orange', 'peach']
for n1, s1 in enumerate(array, 1):
    print(n1, s1)
print("next関数、StopIteration例外のテスト")
a2 = iter(array)
# print("a2[1]:", a2[1])
print(next(a2))
print(next(a2))
print(next(a2))
try:
    print(next(a2))
except StopIteration:
    print("StopIteration例外が発生しました。")

# 代表的なモジュール:math
x1 = float(input("実数値:"))
print("eの", x1, "乗は、", math.exp(x1))
if x1 > 0:
    print(x1, "の自然対数は、", math.log(x1))
    print(x1, "の常用対数は、", math.log10(x1))
    print(x1, "の平方根は、", math.sqrt(x1))
print("自然対数の底は、", math.e)
print("円周率は、", math.pi)
# map関数のテスト
v1 = [1.2, 5.3, 4.7]
v2 = list(map(sc_prod, v1))
print("スカラー積", v1, "*", x1, "=", v2)
v3 = [6.3, 9.1, -11.4]
v4 = list(map(v_prod, v1, v3))
g1 = round(v4[0]+v4[1]+v4[2], 8)
print("内積", v1, "・", v3, "=", g1)
# set, sorted, tuple, reversedのテスト
a1 = ['banana', 'peach', 'apple', 'orange', 'peach']
print("元のリスト", a1)
set1 = set(a1)
print("set:", set1)
a2 = sorted(a1)
print("sorted:", a2)
t1 = tuple(a1)
print("tuple:", t1)
e1 = list(reversed(a1))
print("reversed:", e1)
# bool, complex, float, int, ord, str, zip
print("j1:", j1, ", bool(j1):", bool(j1))
j1 = 0
print("j1:", j1, ", bool(j1):", bool(j1))
str1 = "abc"
print("str1:", str1, ", bool(str1):", bool(str1))
str1 = ""
print("str1:", str1, ", bool(str1):", bool(str1))
c1 = complex(-2, 2)
c2 = c1 * c1
print(c1, "の2乗は", c2)
str1 = "2.718281828459"
g1 = float(str1)
print("文字列:", str1, ", floatの結果:", g1)
str1 = "123456789"
j1 = int(str1)
print("文字列:", str1, ", intの結果:", j1)
j1 = ord('a')
j2 = ord('1')
j3 = ord('あ')
j4 = ord('い')
j5 = ord('愛')
print("a:", j1, hex(j1))
print("1:", j2, hex(j2))
print("あ:", j3, hex(j3))
print("い:", j4, hex(j4))
print("愛:", j5, hex(j5))
print(j1, "文字列:", str(j1))
print(g1, "文字列:", str(g1))
print(c1, "文字列:", str(c1))

e5 = [1, 2, 3, 4, 5]
e6 = [0, 1, 2, 3, 4]
print("e5:", e5, "all(e5):", all(e5))
print("e6:", e6, "all(e6):", all(e6))
e7 = [0, 0, 7, 0, 0]
e8 = [0, 0, 0, 0, 0]
e9 = []
print("e7:", e7, "all(e7):", any(e7))
print("e8:", e8, "all(e8):", any(e8))
print("e9:", e9, "all(e9):", any(e9))

str1 = repr(math.e)
print("eval:", eval(str1), "元:", math.e)
str1 = repr(e5)
print("eval:", eval(str1), "元:", e5)

str1 = "abcdefg"
j1 = 2
g1 = math.e
p1 = Person("井上三郎", "東京都文京区山内町3-10-12", "119-3679")
print("str1:", type(str1), "j1:",
type(j1), "g1:", type(g1), "\np1:", type(p1), "func1:", type(func1))

# compile関数のテスト
str1 = "s1='Hello!'\nprint(s1)"
code1 = compile(str1, "", "exec")
exec(code1)

# hash関数のテスト
str1 = "abcdefg"
print("str1:", str1, ",hash(str1):", hash(str1))
print("j1:", j1, ",hash(j1):", hash(j1))
print("g1:", g1, "hash(g1):", hash(g1))
d1 = {"name":"apple", "price":320}
h1 = d1.keys()
for k1 in h1:
    print("k1:", k1, ",hash(k1):", hash(k1))

# id関数のテスト
str1 = "abcdefg"
j1 = 2
print("j1:", j1, ",id(j1):", id(j1))
print("str1:", str1, ",id(str1):", id(str1))
e6 = e7 = [1, 2, 3]
print("e6:", e6, ",e7:", e7)
e7[1] = 5
print("e6:", e6, ",e7:", e7)
print("id(e6):", id(e6), ",id(e7):", id(e7))

# memoryview関数のテスト
str1 = "abcdefg"
b1 = bytearray(str1, "utf-8")
u1 = memoryview(b1)
print("memoryview(b1):", u1, "array:", u1[0], u1[1], u1[2], u1[3])
u1[1] = 66
u1[3] = 68
print("b1:", b1)

str1 = input("何か入力してください")

# 代表的なモジュール:datetime
dt1 = dt.now()
print("現在の時刻は、", dt1)
print(dt1.year, "年", dt1.month,
"月", dt1.day, "日", dt1.hour, "時", dt1.minute, "分", dt1.second, "秒")
# osモジュールの確認
print("環境変数の確認")
print(os.environ)
print("環境変数PATHの確認")
print(os.environ['PATH'])
p1 = "C:\\python\\testpro\\test1.py"
# p1の情報を取得
st1 = os.stat(p1)
print("ファイル:", p1, "の情報")
# p1の最終アクセス時刻
print("最終アクセス時刻:", dt.fromtimestamp(st1.st_atime))
# p1の最終更新時刻
print("最終更新時刻:", dt.fromtimestamp(st1.st_mtime))
# p1の生成時刻
print("生成時刻:", dt.fromtimestamp(st1.st_birthtime))
# p1のサイズ
print("サイズ:", st1.st_size)
p1 = "C:\\python1\\*"
ef1 = glob.glob(p1)
print(ef1)
ef2 = glob.glob(p1, recursive=True)
print(ef2)
p1 = "C:\\python1\\**"
ef3 = glob.glob(p1, recursive=True)
print(ef3)
p1 = "C:\\python1\\test?.py"
ef4 = glob.glob(p1)
print(ef4)
p1 = "C:\\python1\\*2.py"
ef5 = glob.glob(p1)
print(ef5)
# ファイルの読み書きテスト
f1 = open("C:\\python\\sample1.txt", "w")
# dir()関数のテスト
print("ファイル・オブジェクト:", dir(f1))
print("文字列:", dir(p1))
print("クラス:", dir(m1))
print("関数:", dir(crlf))
b1 = "abcdefghijklmnopqrstuvwxyz"
f1.write(b1)
f1.close()
print("ファイルに、" + b1 + "を書き込みました。")
f1 = open("C:\\python\\sample1.txt", "r")
b2 = f1.read()
f1.close()
print("ファイル内容:", b2)
e1 = ["apple", "orange", "peach"]
f1 = open("C:\\python\\sample1.txt", "w")
f1.writelines(e1)
f1.close()
print("ファイルに、リストe1を書き込みました。")
f1 = open("C:\\python\\sample1.txt", "r")
b2 = f1.read()
f1.close()
print("ファイル内容:", b2)
# リスト要素の[CR][LF]の付加のテスト
e2 = map(crlf, e1)
f1 = open("C:\\python\\sample1.txt", "w")
f1.writelines(e2)
f1.close()
print("ファイルにmap関数を利用して[CR][LF]を付加して書き込みました。")
f1 = open("C:\\python\\sample1.txt", "r")
b2 = f1.read()
f1.close()
print("ファイル内容:", b2)
f1 = open("C:\\python\\sample1.txt", "w")
for s1 in e1:
    print(s1, file=f1)
f1.close()
print("ファイルに、リストe1をprint文で書き込みました。")
f1 = open("C:\\python\\sample1.txt", "r")
b2 = f1.read()
f1.close()
print("ファイル内容:", b2)
f1 = open("C:\\python\\sample1.txt", "r")
str1 = f1.readline()
str2 = f1.readline()
str3 = f1.readline()
str4 = f1.readline()
f1.close()
print("readlineで読み込んだ結果")
print(" str1:", str1, "str2:", str2, "str3:", str3, "str4:", str4)
f1 = open("C:\\python\\sample1.txt", "r")
e3 = f1.readlines()
f1.close()
print("readlinesでリストに読み込んだ結果")
print("リストe3:", e3)
# デフォルトのブラウザを使って、指定されたURLを開く
# webbrowser.open("https://kgkrkgk.com")
print("制御が左上のウィンドウに移っています。\n注意してください")
root = Tk()
root.title("テストします")
txt1 = StringVar()
frm1 = ttk.Frame(root, padding=10)
frm1.grid()
ttk.Label(frm1, text="こんにちは。").grid(column=0,row=0)
ttk.Entry(frm1, textvariable=txt1).grid(column=1,row=0)
ttk.Button(frm1, text="中止", command=root.destroy).grid(column=0, row=1)
root.attributes("-topmost", True)
root.mainloop()
print("入力:", txt1.get())
k1 = input("終了するので何か入力してください")
print("終了します")
sys.exit()