Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 14, 2016 20:09:26

Marlton
Зарегистрирован: 2016-08-14
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите новичку

Здравствуйте! Вот написал программку:

 #Камень, ножницы, бумага 1.0
print('Камень, ножницы, бумага 1.0')
import random
total=' '
knb=input('Камень(1), ножницы(2) или бумага(3)? ')
comp=random.randint(1,3)
if comp==1:
    comp1="Камень"
elif comp==2:
    comp1="Ножницы"
elif comp==3:
    comp1="бумага"
if knb==1 and comp==1:
    total=int('Ничья!')
elif knb==1 and comp==2:
    total=int('Вы выйграли!')
elif knb==1 and comp==3:
    total=int('Вы проиграли!')
elif knb==2 and comp==1:
    total=int('Вы проиграли!')
elif knb==2 and comp==2:
    total=int('Ничья!')
elif knb==2 and comp==3:
    total=('Вы выйграли!')
elif knb==3 and comp==1:
    total=int('Вы выйграли!')
elif knb==3 and comp==2:
    total=int('Вы проиграли!')
elif knb==3 and comp==3:
    total=int('Ничья!')
print("Вы выбрали ",knb, ", компютер выбрал", comp1)
print(total)
Все бы ничего, но я не пойму почему в конце программа не выводит кто выйграл/проиграл/ничья. Есть ли более короткий и простой способ написать эту программу?
Прошу тапками не кидаться, идет третий день изучения мною питона

Офлайн

#2 Авг. 14, 2016 21:16:01

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Помогите новичку

 knb=input('Камень(1), ножницы(2) или бумага(3)? ')
if knb==1 and comp==1:
в условиях ты сравниваешь строку с числом
 import random
knb=int(input('Камень(1), ножницы(2) или бумага(3)? '))
comp=random.randint(1,3)
print("Вы выбрали ",knb, ", компютер выбрал", comp)
if comp>knb or comp == 1 and knb == 3:
    print ('комп')
elif comp == knb:
    print('ничья')
else:
    print('вы')
может с условиями ошибся но как то так

Отредактировано marvellik (Авг. 14, 2016 21:20:57)

Офлайн

#3 Авг. 15, 2016 13:32:36

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Помогите новичку

Например вот так:

  
#!/bin/env python
#-*- coding: utf-8 -*-
 
from random import randint
 
DRAW = "Ничья"
WIN = "Вы победили"
LOSE = "Вы проиграли"
 
STONE, SCISSORS, PAPER = 1, 2, 3
 
result_dict = {(STONE, SCISSORS): WIN,
              (SCISSORS, PAPER): WIN,
              (PAPER, STONE): WIN,
              (SCISSORS, STONE): LOSE,
              (PAPER, SCISSORS): LOSE,
              (STONE, PAPER): LOSE}
 
knb=input('Камень(1), ножницы(2) или бумага(3)? ')
comp=randint(1,3)
 
print('Компьютер выбрал: %s' % comp)
result = result_dict.get((knb, comp), DRAW)
print(result)



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Отредактировано Master_Sergius (Авг. 15, 2016 13:33:01)

Офлайн

#4 Авг. 15, 2016 14:32:53

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Помогите новичку

Master_Sergius
result_dict = {(STONE, SCISSORS): WIN, (SCISSORS, PAPER): WIN, (PAPER, STONE): WIN, (SCISSORS, STONE): LOSE, (PAPER, SCISSORS): LOSE, (STONE, PAPER): LOSE}
здесь можно и обычной логикой обойтись как было в marvellik или
 import random
print('Камень, ножницы, бумага 1.0')
s = ('камень', 'ножницы', 'бумага')
knb = int(input('Камень(1), ножницы(2) или бумага(3)? ')) - 1
comp = random.randint(0, 2)
print("Вы выбрали {}, компютер выбрал {}.\n{}".format(
    s[knb], s[comp],
    ('Вы проиграли!', 'Ничья!', 'Вы выиграли!')[((comp + 1) % 3) - knb]))



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Авг. 15, 2016 14:33:20)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version