PythonnでGUI作成

イメージ
久々の投稿です。 久々過ぎますね・・・ しばらくVBAを使いエクセル操作を自動化してました。 複雑なものは組めませんが、基礎的なことはネット情報や書籍を見ながらできるようになってきました。 Pythonでエクセルを操作できるライブラリ「openpyxl」がある事を知り簡単なPGを作ってみたところ 動くではありませんか! openpyxl.xlskというエクセルファイルのセルに入力後保存するという簡単なもの ////////////////////////////////////////////////////////////////////////////////// import openpyxl as px wb = px.load_workbook("openpyxltest.xlsx") ws = wb["Sheet"] ws.cell(1,1).value ="int" ws.cell(1,2).value =1234 ws.cell(1,3).value ="str" ws.cell(1,4).value ="1234" ws.cell(2,2).value = 4567 ws.cell(2,4).value ="4567" for i in range(1,11): ws.cell(3,i).value = i ws.cell(i+3,1).value = "TEST" + str(i) wb.save("openpyxltest.xlsx") ////////////////////////////////////////////////////////////////////////////////// しかし、作ったPGは他の人も使うので、GUIにできないかと調べておりました。 標準ライブラリの「tkinter」を使えばできるのですが、素人にはとっつきにくく 理解し難いものでした。(いずれ勉強して覚えたいと思いますが。。。) 他に何かライブラリはないかとインターネットで検索していると「PySimplGUI」という ライブラリを見つけ

【課題】C# 繰り返し処理(for文)

【課題】難易度1
コンソールから正数値を入力させた後、forループを用いて、その数だけ■マークを表示するプログラムを作りなさい。


【私の答え】

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("数:");
            int a = int.Parse(Console.ReadLine());
            
            for (int i=1; i <= a; i++) 
            {
                Console.Write("■");
            }

            Console.WriteLine();  //改行

-------
この課題に30分かかってようやく解けました。。。
すごい単純な事に悩んでました。
for文の条件定義を(int i=1; i==a; i++)としておりコマンドプロンプトで数値入力直後にプログラムが終了するという結果になりました。
for文に誤りがあるのだろうと思い。以下のコードを修正しました。
数字の動きを確認しました。

for (int i=1; i >= a; i++) 
            {
                Console.WriteLine("a=" + a);
                      →当然このブロックはパスされているので実行しません。
                Console.WriteLine("i=" + i);
            }
Console.WriteLine("a=" + a);
Console.WriteLine("i=" + i); → iが定義されていないとエラーがでてコンパイルできず。。。

なるほど、for文のブロック内で宣言した変数はfor文のブロックを抜けると使えないのか。。。

演算子が悪いのか?
for (int i=1; i >= a; i=i+1)
このように修正しfor文ブロック外のwriteLineを削除しコンパイル。
結果変わらず。。。
なんで????
こんな簡単なのなぜできん・・・
「iがaより大きくなるまで繰り返しなさい。」
ん??何か違う・・・
「i=aの時はiがaと等しくなるまで繰り返しなさい。」
これでもfor文のブロックが飛ぶという事は逆??
「iがaより小さければ繰り返しなさい。」か!!
for (int i=1; i <= a; i++) このように修正
動いた!!
判定式が「tureなら繰り返し、false抜ける」でした。

こんな事でもきちんと動くと嬉しいです!!



          


コメント

このブログの人気の投稿

【備忘録】Microsoft SQL Sever Management Studio 2017 <設定>

プログラミングにチャレンジ