class Idiot:
__init__(self,x,y,z):
self.name = x
self.sex = y
self.why = z
printing_idiots(self):
print('{} is so idiot.'.format(self.name))
print('{0} is {1}.'.format(self.name,self.sex))
print('Why is he idiot,{}'.format(self.why))
setting_idiots_data(self):
print("What is idiot's name?")
self.name = input()
print("What is idiot's sex?")
self.sex = input()
if (self.sex = men):
print('Why is he idiot?')
self.why = input()
elif (self.sex = woman):
print('Why is she idiot?')
else:
print('you are a bullsit guy!')
idiot = Idiot()
idiot.setting_idiots_data()
idiot.printing_idiots()
このソースコードのイニシャライザの部分でエラーが出ている。
探検
プログラミング超初心者の質問
■ このスレッドは過去ログ倉庫に格納されています
1名無しさん
2021/03/26(金) 19:47:53.89ID:UdurcVDt125デフォルトの名無しさん
2021/06/04(金) 18:07:07.71ID:aBiHmFjq >>121
雑だけど
まず今のCPUは便利なんで引き算も掛け算も割り算もコマンドで実施できるけど、
H/W的な仕組みで言うと本来足し算しか出来なくて、数値の表現も+とか-とか
存在しないんよ
なので一定のビットの塊、例えばshort型ならば16birtで数値を表現する場合、
16ビットで65535って数値まで表現できるけど、人間が-数値と認識できる表現と
して最上位ビットが立っていたら-、立っていなかったら+って決めることで
-1から-32768と0から32767を表すって決めたんだいな
決め事なんでなんでって言われても困るんだけど
で、足し算しか出来ない環境でどう引き算をするかっていうと、3から5を引くと
答えは-2なわけだけど
話を簡単にするために4ビット表現で0111が7、1111が-1、符号なしだと1111で
15ってシステムで考えると
3から5を引かずに、15から3引いて1足して5を足すと数値的には5ビット分に
なるので下4ビットだけ取り出す
桁があふれたら-、あふれなかったら+の値ってなる(分からないねw)
15は1111で3を引くと1100、これは3(0011)をビット反転させるのと同じこと
この操作を補数表現といって、理屈はともかく元の数をビット反転すれば良い
15から3引いて5を足すと17(10001)ってなるけど、数値は4ビットでは15まで
しか表現できないので17から15を引くと余りが2になり余分なビットがあるので-2
あふれたビットを引く行為は16を引くことになり1多く引かなければならないので、
最初に補数に1足しておく
この補数に1足したものを2の補数というだいな
まとめると3-5が0011(3)->1100(3を補数化)+0001(2の補数にする)+0011(5)で
10010になって、下4ビットを取り出して0010、あふれた桁を最上位ビットに入れると
1010で-2になると
かえって分かりにくいか?
雑だけど
まず今のCPUは便利なんで引き算も掛け算も割り算もコマンドで実施できるけど、
H/W的な仕組みで言うと本来足し算しか出来なくて、数値の表現も+とか-とか
存在しないんよ
なので一定のビットの塊、例えばshort型ならば16birtで数値を表現する場合、
16ビットで65535って数値まで表現できるけど、人間が-数値と認識できる表現と
して最上位ビットが立っていたら-、立っていなかったら+って決めることで
-1から-32768と0から32767を表すって決めたんだいな
決め事なんでなんでって言われても困るんだけど
で、足し算しか出来ない環境でどう引き算をするかっていうと、3から5を引くと
答えは-2なわけだけど
話を簡単にするために4ビット表現で0111が7、1111が-1、符号なしだと1111で
15ってシステムで考えると
3から5を引かずに、15から3引いて1足して5を足すと数値的には5ビット分に
なるので下4ビットだけ取り出す
桁があふれたら-、あふれなかったら+の値ってなる(分からないねw)
15は1111で3を引くと1100、これは3(0011)をビット反転させるのと同じこと
この操作を補数表現といって、理屈はともかく元の数をビット反転すれば良い
15から3引いて5を足すと17(10001)ってなるけど、数値は4ビットでは15まで
しか表現できないので17から15を引くと余りが2になり余分なビットがあるので-2
あふれたビットを引く行為は16を引くことになり1多く引かなければならないので、
最初に補数に1足しておく
この補数に1足したものを2の補数というだいな
まとめると3-5が0011(3)->1100(3を補数化)+0001(2の補数にする)+0011(5)で
10010になって、下4ビットを取り出して0010、あふれた桁を最上位ビットに入れると
1010で-2になると
かえって分かりにくいか?
126デフォルトの名無しさん
2021/06/05(土) 01:44:06.37ID:MUSr8GWf 最上位ビットが±を表すのを決めたわけではなく、2の補数を使うのを決めたからそうなってるだけでは
127デフォルトの名無しさん
2021/06/05(土) 13:53:06.28ID:L4Bl9jnp >>121
4ビットで考ます。4ビットでは 2の4乗=16で16とおりの表現が可能です。
正の数のみ(UINT)を扱う場合は、0〜15の数値を通常 0000を数値0、0001を数値1、....
、1111を数値15 に割り当てます(以降連続する4文字の0、1は計算機上の値、それ以外は論理上
の数値)。
正と負の数(INT)を考える場合は-8〜7(-7〜7)を0000〜1111に割り当てるわけですがUINTとの
整合性をとるため0000〜0111は0〜7に割り当てます。残りの 1000〜1111を負の数に割り当てる
ことになりますが、これには1000〜1111をそれぞれ -0〜-7(絶対値)、-7〜-0(1の補数)、
-8〜-1(2の補数) に割り当てる3とおりの表現方法があります。
いずれも最上位ビットが負数を意味します。また絶対値と1の補数には-0が存在します。
1の補数は数値を符号反転(正->負、負->正)するときおのおののビットを反転(0->1、1->0)
すればよく、2の補数はおのおののビットを反転し1を加えればよい という性質があります。
人間的には絶対値表現がわかりやすのでしょうが、下記のように演算のハードウエアが簡単で
すむという理由で計算機では2の補数が用いられます(1の補数は-0の処理がやっかい)。
減算を実行する場合、計算機に限らず、減数を符号反転して被減数に加えても結果は同じです。
2の補数ではA−BをA+(Bの符号反転+1)として演算します。
計算機の中の加算器はC+D+Cary を実行するように構成されます。Caryは桁上げビットであり、
最下位ビットだけ 3ビットの加算ができるわけです。桁上げのない加算を行うときは Cary入力を0に
して演算します。減算するときはDの入力値を反転して1を加えるわけですが、反転は各ビット毎に
XORゲートで行います(減算だけなら反転ゲートでよいが加算も減算も行うので通常はXORを使う)。
1を加える処理は別の加算器を用いなくともCary入力を1にすることで達成できます。
減算を実行するためにXORゲートの追加が必要になりますが加算器に比べれば規模は1/3程度です。
注. 計算機の中の 0000〜1111の値を論理上どう考えるかは自由。0000〜1111を2進数と考え
そのまま対応する数値0〜15を割り当てる場合ばかりではない。 --->グレイコード
4ビットで考ます。4ビットでは 2の4乗=16で16とおりの表現が可能です。
正の数のみ(UINT)を扱う場合は、0〜15の数値を通常 0000を数値0、0001を数値1、....
、1111を数値15 に割り当てます(以降連続する4文字の0、1は計算機上の値、それ以外は論理上
の数値)。
正と負の数(INT)を考える場合は-8〜7(-7〜7)を0000〜1111に割り当てるわけですがUINTとの
整合性をとるため0000〜0111は0〜7に割り当てます。残りの 1000〜1111を負の数に割り当てる
ことになりますが、これには1000〜1111をそれぞれ -0〜-7(絶対値)、-7〜-0(1の補数)、
-8〜-1(2の補数) に割り当てる3とおりの表現方法があります。
いずれも最上位ビットが負数を意味します。また絶対値と1の補数には-0が存在します。
1の補数は数値を符号反転(正->負、負->正)するときおのおののビットを反転(0->1、1->0)
すればよく、2の補数はおのおののビットを反転し1を加えればよい という性質があります。
人間的には絶対値表現がわかりやすのでしょうが、下記のように演算のハードウエアが簡単で
すむという理由で計算機では2の補数が用いられます(1の補数は-0の処理がやっかい)。
減算を実行する場合、計算機に限らず、減数を符号反転して被減数に加えても結果は同じです。
2の補数ではA−BをA+(Bの符号反転+1)として演算します。
計算機の中の加算器はC+D+Cary を実行するように構成されます。Caryは桁上げビットであり、
最下位ビットだけ 3ビットの加算ができるわけです。桁上げのない加算を行うときは Cary入力を0に
して演算します。減算するときはDの入力値を反転して1を加えるわけですが、反転は各ビット毎に
XORゲートで行います(減算だけなら反転ゲートでよいが加算も減算も行うので通常はXORを使う)。
1を加える処理は別の加算器を用いなくともCary入力を1にすることで達成できます。
減算を実行するためにXORゲートの追加が必要になりますが加算器に比べれば規模は1/3程度です。
注. 計算機の中の 0000〜1111の値を論理上どう考えるかは自由。0000〜1111を2進数と考え
そのまま対応する数値0〜15を割り当てる場合ばかりではない。 --->グレイコード
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- Z世代、35%が週休3日希望 「無理せず・安定」に重き 民間調査 [♪♪♪★]
- 斎藤元彦・兵庫県知事、関西学院大学での「講演」予定に波紋 法学部長がコメント「教授会は承認せず」「利用されているようで不愉快」 [ぐれ★]
- 【コメ】やっぱり進次郎のほうがマシ…「コメの値下げは無理」と言い張る農林族の鈴木農水大臣 ★3 [ぐれ★]
- 石破前首相 おこめ券配布に「その原資は何?国民の税金でしょう」「リーズナブルな価格でお米が手に入るようにすることの方が大事」 [muffin★]
- 【発信国情報】X、プロフィール上に「VPN使用の有無」も表示か… ★2 [BFU★]
- 「イスラム土葬墓地、国の責任で全国に整備を」大分の自民市議団が異例要望 岩屋毅氏尽力 日出町 [少考さん★]
- こんばんは👁👁
- かたおやさんあつまれぇ
- 【速報】香港、日本総領事と断交 [369521721]
- お前ら今すぐ金玉触ってみろwwwwww
- ( ・᷄ὢ・᷅ )なんか面白いことねーの?
- 高市さんのG20遅刻問題洒落にならないことになってた、日本抜きで全会一致で中国寄りの首脳宣言が採択されてそのまま有無を言わさず閉幕 [709039863]
