Porovnání seznamu s hodnotou – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Porovnání seznamu s hodnotou – Python – Fórum – Programujte.comPorovnání seznamu s hodnotou – Python – Fórum – Programujte.com

 

Kristina
~ Anonymní uživatel
17 příspěvků
13. 2. 2013   #1
-
0
-

Dobrý den, 

dnes jsem se potýkala s touto úlohou (pro Python3): Určete všechna prvočísla v rozsahu (20,40) a určete,
který poměr z těchto čísel je nejblíže zadané hodnotě 1.7. Jediné, co se mi podařilo vytvořit, je však pouze
program, který vypíše žádaná prvočísla, odchylky od hodnoty 1.7 a určí jejich minimu (viz můj kód níže). 
Mohl by mi prosím někdo poradit, jak splnit zadání úlohy buď úpravou mého kódu, popř. mě navést na postup,
který by vedl k řešení? Všem předem děkuji. 
(U těch prvočísel chci přepsat range na (2, sqrt(cislo)), všimla jsem si toho až těď po vložení kódu)
# Určí, zda je dané číslo prvočíslo
def prvo(cislo):
    if (cislo >= 2):
        for i in range(2, cislo - 1):
            if((cislo%i) == 0):
                return False
        return True
# Tady se připraví seznam prvočísel v zadaném intervalu
seznam = []   
for i in range (20,40):       
    a = prvo(i)
    if (a == True): 
        seznam.append(i)       
print(seznam)
a = seznam
#Zde zjišťuji, jaké jsou odchylky podílů jednotlivých čísel od hodnoty 1.7 a tu minimální              
prumery = []
rozdily = []
for i in range(0,4):
    for j in range(0,4):
        p = a[i]/a[j]
        prumery.append(p)
        rozdil = abs(p - 1.7)
        rozdily.append(rozdil)
        minimum = min(rozdily)
       
print(rozdily)
print(minimum)

Nahlásit jako SPAM
IP: 90.180.179.–
sputnikone+1
Věrný člen
13. 2. 2013   #2
-
0
-

#1 Kristina
Doufám, že jsem dotaz pochopil správně
 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
def prvo(cislo):
    if cislo >= 2:
        for i in range(2, cislo - 1):
            if (cislo % i) == 0:
                return False
        return True
# Tady se připraví seznam prvočísel v zadaném intervalu
seznam = list(filter(prvo, range(20,40))) 
print(seznam)
#Zde zjišťuji, jaké jsou odchylky podílů jednotlivých čísel od hodnoty 1.7 a tu minimální
combine = ((a,b) for a in seznam for b in seznam)
rozdily = {}
for i, j in combine:
        p = i/j
        rozdil = abs(p - 1.7)
        rozdily[rozdil] = (i, j)
       
print(rozdily)       
maximum = max(rozdily.keys())
print(rozdily[maximum])
Nahlásit jako SPAM
IP: 89.103.91.–
Kristina
~ Anonymní uživatel
17 příspěvků
13. 2. 2013   #3
-
0
-

#2 sputnikone
Ano, toto mi moc pomohlo, nejen v tomto konkrétním případě.

Moc Vám děkuji za Váš čas i ochotu

Nahlásit jako SPAM
IP: 90.180.179.–
sputnikone+1
Věrný člen
13. 2. 2013   #4
-
0
-

#3 Kristina
A zde je korektní verze, splňující zadání (po pátém přečtení): 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
def prvo(cislo):
    if cislo >= 2:
        for i in range(2, cislo - 1):
            if (cislo % i) == 0:
                return False
        return True
# Tady se připraví seznam prvočísel v zadaném intervalu
seznam = list(filter(prvo, range(20,40))) 
print(seznam)
#Zde zjišťuji, jaké jsou odchylky podílů jednotlivých čísel od hodnoty 1.7 a tu minimální
combine = ((a,b) for a in seznam for b in seznam)
rozdily = {}
for i, j in combine:
        p = i/j
        rozdil = abs(p - 1.7)
        rozdily[rozdil] = (i, j)
       
print(rozdily)       
minimum = min(rozdily.keys())
print(rozdily[minimum])
Nahlásit jako SPAM
IP: 89.103.91.–
Kristina
~ Anonymní uživatel
17 příspěvků
13. 2. 2013   #5
-
0
-

#4 sputnikone
Děkuji, ale pomohla mi i ta předchozí. Jsem začátečník, proto mě někdy nenapadne použít možnosti, o kterých jsem četla, popř. neznám jiné, než o kterých jsem četla. 

Děkuji za inspirující rady

Nahlásit jako SPAM
IP: 90.180.179.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Podobná vlákna

Problém s hodnotou if . — založil w3q

Práce s hodnotou čas — založil VasekTrain CZ

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý