• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pomoc w ukończeniu 1 programu w Pythonie

Object Storage Arubacloud
0 głosów
479 wizyt
pytanie zadane 11 czerwca 2018 w Nasze projekty przez Absum Bywalec (2,640 p.)

print("Podaj pierszą liczbę")
x = input()
x = float(x)
print("Podaj znak działania")
dodaj=("+")
odejmij=("-")
pomnoz=("*")
podziel=("/")
dodaj,odejmij,pomnoz,podziel=input()
print("Podaj drugą liczbę")
b = input()
b= float(b)
print("Wynik: ")

Miał to być program który dodaje odejmuje mnoży i dzieli 

Miał pobierać dane od użytkownika o liczbie

następnie miał wybrać znak i ponownie miał pobrać dane i podać wynik.

 ktoś mi wyjaśni jak przedstawić zmienną tak by przedstawiała znak działania a nie ciąg znaków?

Proszę o wyrozumiałość Dzisiaj dopiero zaczynam naukę z Pythonem

komentarz 11 czerwca 2018 przez RogerB Gaduła (3,370 p.)

Możesz od razu przy wpisywaniu ustalić typ zmiennej w ten sposób:

x=float(input())

 

komentarz 11 czerwca 2018 przez Absum Bywalec (2,640 p.)
Czyli to zamiast :

x=input()

x=float()

?
komentarz 11 czerwca 2018 przez Chess Szeryf (76,710 p.)

Podaj kod, z czym masz teraz problem. RogerB napisał wyraźnie, że tak to ma wyglądać:

x=float(input())

Jest to chyba ustalenie, czy rzutowanie typu zmiennej na float, czyli będzie mogła wystąpić liczba zmienno-przecinkowa.

komentarz 11 czerwca 2018 przez ProgramistaStepek Nałogowiec (27,020 p.)
Tylko uważaj, i nie przesadzaj w rozbudowywaniu takich tworów :)
komentarz 11 czerwca 2018 przez Absum Bywalec (2,640 p.)

@Absum,

print("Podaj pierszą liczbę")
a=float(input())

print("Podaj drugą liczbę")
b=float(input())

print ("Kolejno:dodawanie,odejmowanie,mnożenie,dzielenie")

Wynik0=float(a)+(b)
Wynik1=float(a)-(b)
Wynik2=float(a)*(b)
Wynik3=float(a)/(b)

print (Wynik0)
print (Wynik1)
print (Wynik2)
print (Wynik3)

A więc poprawiłem to trochę
Narazie zrobiłem tak jak mi doradziliście i wyszło coś takiego 
Jutro napiszę coś bardziej funkcjonalnego 
Czy to normalne że niby jak teraz mi się wydaje że umiem napisać to z pamięci 
To jutro będę pamiętać tylko z 70%?
Zadacie mi jakieś zadanie dla początkującego tak bym miał motywacje dla siebie samego?
Może to być odnośnie tego kalkulatora lub coś innego by mi to się bardziej utwaliło
Dziękuję wszystkim za odpowiedzi,miło współpracować z ludzmi ktorzy dzielą się wiedzą

 

komentarz 11 czerwca 2018 przez Chess Szeryf (76,710 p.)

Napisz grę w statki. Ktoś wpisuje do input'a wartość a1 i funkcja, czy coś sprawdza czy tam jest ulokowany "statek", jeśli tak to zabiera ten kwadrat z planszy, itp..

Dajmy na to jest coś takiego:

1 0 0 0 1 1 1
1 0 0 0 0 0 0
0 0 0 0 0 0 0

Na a3 i a2 jest część statku. Później na polach e3, f3, g3. Teraz jeśli ktoś trafi, to jedynka powinna zostać zamieniona na zero. Napisz to tak, żeby liczyło np. ilość prób, w ilu próbach zatopiłeś wszystkie statki. Możesz to napisać dla jednej osoby jak i dla więcej osób. Żeby to napisać zainteresuj się tablicami chociażby.

komentarz 11 czerwca 2018 przez Absum Bywalec (2,640 p.)
Poza znajomością tablic jaka wiedza mi do tego sie jeszcze przyda ?

Jakie zagadnienia mam wyszukać by je zrozumieć i napisać ten program (Gre)

Druga sprawa bardzo jestem wdzięczny za trud ! I dziękuję oczywiście
komentarz 11 czerwca 2018 przez Chess Szeryf (76,710 p.)

Jeśli na a3 stoi część statku, a ty wpisałeś w input'a a3, to musisz napisać instrukcję warunkową if, która będzie sprawdzała, czy tam jest zero, czy jeden. Jeśli jest jeden niech zapisze punkt. Tych punktów w przykładzie jest pięć, więć po zdobyciu pięciu punktów kończysz grę, wygrywasz. Do tego chyba potrzebowałbyś pętli, ale na razie jakoś by się obyło bez niej. Napisz to najpierw na if'ach (przynajmniej część), a później przepisz na pętlę. Gdy będziesz pisał program/skrypt, to musisz "powiedzieć", aby skrypt/program "widział" kolumny i wiersze. Czyli np. arr[0]==a1, arr[1]==a2, arr[3]==a3, itd.. W każdym bądź razie coś w tym stylu możesz napisać.
 

// PSEUDO-CODE

if(points==5) {
   print 'You Win';
}else {
   if(data_input==arr[0]) {
      points++;
      arr[0]=0;
   }
}

 

komentarz 12 czerwca 2018 przez Absum Bywalec (2,640 p.)

Rozumiem

A tworząc taką tablice mam definiować kazdą 1 i 0 tak by instrukcja mogła wyczytać ją z osobna tak?

Dobrze nie zadaje już głuoich pytań ide zobaczyć i przeanalizować tablice 2 wymiarowe i dokladnie przyjzeć sie fukcji if

komentarz 12 czerwca 2018 przez Chess Szeryf (76,710 p.)
edycja 12 czerwca 2018 przez Chess

Nie wiem jak jest w Python'ie, ale w PHP tablice można tak zdefiniować:

$arr = [
   1,0,0,0,1,1,1,
   1,0,0,0,0,0,0,
   0,0,0,0,0,0,0
];

Później trzeba "powiedzieć" skryptowi, że indeksy od 0 do 6 to wiersz trzeci; od 7 do 13, drugi; od 14 do 20, pierwszy. Indeksy: 0, 7, 14 to kolumna pierwsza, itd.. Oczywiście możesz to inaczej napisać jak chcesz.

Przykład:

<body style="background:grey">

<form method="post" action="">
	<input type="text" name="hit" />
	<input type="submit" name="check" value="check" />
	<input type="submit" name="res_sess" value="reset" />
</form>
<?php
session_start();

if(isset($_POST['res_sess'])) {
	session_destroy();
}

if(!isset($_SESSION['arr'])) {
	$_SESSION['arr'] = [
		1,0,0,0,1,1,1,
		1,0,0,0,0,0,0,
		0,0,0,0,0,0,0
	];
}

$alphabet = [
	'a','b','c','d','e','f','g'
];
// Zakładając, że znamy wielkość planszy.
$alpha=0;
for($i=0;$i<count($_SESSION['arr']);$i++) {
	
	if($alpha>6 || $alpha>13) {
		$alpha=0;
	}
	
	if($i<7) {
		$arr2[] = $alphabet[$alpha] . 3;
	}elseif($i<14) {
		$arr2[] = $alphabet[$alpha] . 2;
	}else { 
		$arr2[] = $alphabet[$alpha] . 1;
	}
	
	$alpha++;
	
}

// Bardzo prymitywne rozwiązanie moim zdaniem.

$input = $_POST['hit'] ?? NULL;

if(!isset($_SESSION['points'])) {
	$_SESSION['points']=0;
}

for($j=0;$j<count($_SESSION['arr']);$j++) {
	if($arr2[$j]==$input) {
		if($_SESSION['arr'][$j]==0) {
			echo 'Not Hit';
		}else {
			
			$_SESSION['arr'][$j]=0;
			echo 'Hit';
			$_SESSION['points']++;
		}
	}
}
echo $_SESSION['points'];

if($_SESSION['points']==5) {
	echo 'You Won';
}
 
?>
</body>

 

3 odpowiedzi

0 głosów
odpowiedź 11 czerwca 2018 przez ProgramistaStepek Nałogowiec (27,020 p.)
Po prostu zdefiniuj kilka funkcji adekwatnych do działania i wywołuj je z liczbami otrzymanymi od użytkownika.
komentarz 11 czerwca 2018 przez Chess Szeryf (76,710 p.)
edycja 11 czerwca 2018 przez Chess

Mu chyba chodzi o funkcję eval. Nie wiem, czy w Python'ie robi to samo, co najczęściej w innych językach programowania. Uprzedzam jednak, że tak chyba nie powinno pisać się programów, podobno jest to niebezpieczna technika, a na ile to sam nie wiem za bardzo.

komentarz 11 czerwca 2018 przez Absum Bywalec (2,640 p.)
Dziękuje za nakierowanie jak poucze sie funkcji to poprawie kod i dam znać w postaci juz prawdopodobnie działającego programu !
komentarz 11 czerwca 2018 przez Absum Bywalec (2,640 p.)

@Chess, a tu nie chodzi o funkcje idntrukcji def?

komentarz 11 czerwca 2018 przez Absum Bywalec (2,640 p.)

@Chess, a dobrze masz racje !

0 głosów
odpowiedź 12 czerwca 2018 przez Absum Bywalec (2,640 p.)
x=float(input("Prosze wybierz liczbe: "))
z=input("Wybierz operator +,-,*,/ :")
y=float(input("Prosze wybierz druga liczbe: "))

operator={"+":x+y,"-":x-y,"*":x*y,"/":x/y}
funcs = {"+": (lambda: x+y)}
funcs = {"-":(lambda:x-y)}
funcs ={"*":(lambda:x*y)}
funcs ={"/":(lambda:x/y)}
wynik =x+z+y
print (wynik )  


Tu mam prosty kod prostego kalkulatora który mogl by dzialać jak by wiedzial jak zdefiniowac operator  Bo w tej postaci odbiera go jako liczbe i wywala błąd

komentarz 12 czerwca 2018 przez Chess Szeryf (76,710 p.)

Musisz chyba napisać instrukcję warunkową if, poczytaj o niej.

–3 głosów
odpowiedź 11 czerwca 2018 przez Chess Szeryf (76,710 p.)

To może ja napiszę to w języku PHP i sobie sam przepiszesz na Python'a.

<form method="get" action="">
	<input type="text" name="num_f"/>
	<input type="text" name="num_s"/>
	<select name="character">
		<option>+</option>
		<option>-</option>
	</select>
	<input type="submit"/>
</form>
<?php

$num_f = $_GET['num_f'] ?? 0;
$num_s = $_GET['num_s'] ?? 0;
$character = $_GET['character'] ?? '+';

eval("\$x = \"$num_f\" $character \"$num_s\";");

var_dump($x);

?>

Ale tak jak już wspomniałem w komentarzu:

Uprzedzam jednak, że tak chyba nie powinno pisać się programów, podobno jest to niebezpieczna technika, a na ile to sam nie wiem za bardzo.

komentarz 11 czerwca 2018 przez ProgramistaStepek Nałogowiec (27,020 p.)

Uprzedzam jednak, że tak nie powinno pisać się programów, podobno jest to niebezpieczna technika, a na ile to sam nie wiem za bardzo.

To po co pokazujesz takie techniki?

komentarz 11 czerwca 2018 przez Absum Bywalec (2,640 p.)
Dobrze mogę sie domyślać bo jak wpomniałem dopiero zaczynam orzygote i nie znam nawet podstaw php

Ale coś spróbuje przetłumaczyć
komentarz 11 czerwca 2018 przez Chess Szeryf (76,710 p.)

To po co pokazujesz takie techniki?

ProgramistaStepek, chociażby dla poszerzenia horyzntów może coś takiego zaimplementować.

komentarz 11 czerwca 2018 przez ProgramistaStepek Nałogowiec (27,020 p.)
Prawda, ale lepiej poszerzać horyzonty w dobrą stronę :)
komentarz 11 czerwca 2018 przez Chess Szeryf (76,710 p.)
Warto zaznajomić się z tą funkcją, że w ogóle takie coś istnieje.

Podobne pytania

0 głosów
1 odpowiedź 3,079 wizyt
pytanie zadane 12 czerwca 2018 w Nasze projekty przez Absum Bywalec (2,640 p.)
0 głosów
0 odpowiedzi 50 wizyt
pytanie zadane 22 września 2020 w Python przez lubie internet Użytkownik (780 p.)
0 głosów
1 odpowiedź 213 wizyt
pytanie zadane 24 sierpnia 2019 w Python przez Jakub Chomicz 1 Użytkownik (840 p.)

92,626 zapytań

141,486 odpowiedzi

319,843 komentarzy

62,008 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...