2016-11-02 2 views
0

CS 소개 강의에서 우리는 파이썬으로 배우고 있습니다. 조금은 알고 있지만, 우리는 4 명, 각각 13 장의 카드를 다루는 프로젝트가 있습니다. , 그리고 기본적으로 그들은 지점 가치 현명한 다리 역할을합니다. Prof를 인쇄 할 때 라고 말하고 싶습니다. 목록에있는 번호를 인쇄하고 목록에 숫자를 인쇄하려면 밝혀진 함수를 사용하십시오. 어쨌든 theres를 정리하려면 어쨌든 제안을 좋아한다면긴 질문, 주로 코드, 도움 주셔서 감사합니다!Verticle Print 공백을 제거하는 데 도움이 필요합니다

West 
    Diamonds 
    J 
    A 
    Spades 
    4 
    7 
    8 
    10 
    Q 
    Hearts 
    4 
    9 
    Q 
    Clubs 
    5 
    A 
West has a point value of 13 points! 
_______________ 
North 
    Diamonds 
    9 
    10 
    Q 
    K 
    Spades 
    2 
    3 
    6 
    J 
    Hearts 
그와 마찬가지로

, 그러나 광산과 같이 인쇄됩니다 : 여기

West 
Diamonds 
J 
A 

Spades 
4 
7 
8 
10 
Q 

Hearts 
4 
9 
Q 

Clubs 
5 
A 

West has a point value of 13 points! 
_______________ 
North 
Diamonds 
9 
10 
Q 
K 

Spades 
2 
3 
6 
J 

Hearts 

하면 reveal 함수에서 전체 코드

import random 
Deck_cards = list(range(1,53)) 
random.shuffle(Deck_cards) 

West=Deck_cards[0:13] 
West.sort() 
North=Deck_cards[13:26] 
North.sort() 
East=Deck_cards[26:39] 
East.sort() 
South=Deck_cards[39:52] 
South.sort() 
players_hand=[West, North, East, South] 
Players_handname=["West","North","East","South"] 

def facecard(sel): 
    if sel % 13==10: 
     return "J" 
    elif sel % 13==11: 
     return "Q" 
    elif sel % 13==12: 
     return "K" 
    elif sel % 13==0: 
     return "A" 
    else: 
     return (sel+1) % 13 

def cardpoints(sel): 
    value=0 
    if sel % 13==10: 
     return value+1 
    elif sel % 13==11: 
     return value+2 
    elif sel % 13==12: 
     return value+3 
    elif sel % 13==0: 
     return value+4 
    else: 
     return value 

def totalpoints(x): 
    sum=0 
    for i in x: 
     if i in range(1,53): 
      sum=cardpoints(i)+sum 
    return sum 

def spades(x): 
    print("Spades") 
    list1 = [] 
    for i in x: 
     if i in range(1,14): 
      list1.append(facecard(i)) 
    return list1 

def hearts(x): 
    print("Hearts") 
    list1 = [] 
    for i in x: 
     if i in range(14,27): 
      list1.append(facecard(i)) 
    return list1 

def diamonds(x): 
    print("Diamonds") 
    list1 = [] 
    for i in x: 
     if i in range(27,40): 
      list1.append(facecard(i)) 
    return list1 

def clubs(x): 
    print("Clubs") 
    list1 = [] 
    for i in x: 
     if i in range(40,53): 
      list1.append(facecard(i)) 
    return list1 

def reveal(x): 
    for i in x: 
     print(i) 
    return " " 
index = 0 
for i in players_hand: 
    print(Players_handname[index]) 
    print(reveal(diamonds(i))) 
    print(reveal(spades(i))) 
    print(reveal(hearts(i))) 
    print(reveal(clubs(i))) 
    print(Players_handname[index],"has a point value of", totalpoints(i) , "points!") 
    index=index+1 
    print("_______________") 
+0

내부에는'reveal' 값을 출력하므로 ""를 반환 할 필요가 없습니다. 'print (reveal (...)) '대신'reavel (...)'을 사용한다. 들여 쓰기를하기 위해'print ("", i)'공백을 추가 할 수 있습니다. – furas

답변

1

, 당신은 예를 들어, print 전화를 가지고 print(i). 이 함수는 공백을 반환합니다. reveal으로 전화를 걸면 통화 결과가 인쇄됩니다. 당신이 그것을 원하지 않는다면 공백이있는 여분의 줄을 반환하고 인쇄 할 이유는 없습니다. 간단하게 reveal 전화를 print에 넣지 마십시오. 당신이 그 내용을 들여뿐만 아니라 여분의 줄을 제거하려면

def reveal(x): 
    for i in x: 
     print(i) 

... 

reveal(diamonds(i)) 

, 단순히 필요한 탭을 추가

def hearts(x): 
    print("\tHearts") 
    ... 

 

def reveal(x): 
    for i in x: 
     print('\t%s' % i) 
+0

감사합니다! 그게 효과가있어, 그가 원하는 것처럼 들여 쓰기를하는 방법에 대한 생각? –

0

print마다에를 automaticly 새 라인 문자를 추가합니다 문자열이 인쇄됩니다. 예를 들어, 같은 줄에 인쇄하려면 다른 문자를 사용하십시오. 예를 들어,

print(i, end=' ') 
관련 문제