2015-06-09 33 views
5

Tôi là người mới lập trình. Tôi có một chút vấn đề với mã hóa python (với chức năng def).Làm thế nào để bạn sử dụng chức năng đầu vào cùng với chức năng def?

Vì vậy, về cơ bản, mã phải cung cấp số nhỏ hơn trong số 2 số.

Câu hỏi: mã Write để thực hiện các nhiệm vụ sau đây:

  1. Xác định một smaller_num chức năng mà mất trong hai số điện thoại để xác định và trả về số nhỏ hơn của cả hai.
    Yêu cầu người dùng hai số
    Sử dụng chức năng để xác định số nhỏ hơn và hiển thị kết quả

Vì vậy, tôi có đầu vào người dùng thay vì gọi hàm và tăng thêm giá trị bên trong biến.

Đây là cách mã của tôi trông giống như:

def smaller_num(x,y): 
    if x>y: 
     number= y 
    else: 
     number= x 
    return number 

smaller_num(x= input("Enter first number:-") ,y= input("Enter second number:-")) 

print("The smaller number between " + str(x) + " and " + str(y) + " is " + str(smaller_num)) 

Làm thế nào để sửa chữa nó? Bây giờ nó không hoạt động vì "x" không được xác định. Nhưng tôi cảm thấy rằng tôi đã xác định rõ ràng cả chức năng và chức năng đầu vào. Vậy làm cách nào để khắc phục vấn đề này?

Cảm ơn những người trả lời câu hỏi này.

+2

Vui lòng định dạng mã của bạn – kvorobiev

+1

Tôi phải khen ngợi bạn rất nhiều vì đã cho chúng tôi thấy những gì bạn đã thử thay vì chỉ yêu cầu chúng tôi giải quyết các công việc của bạn. Làm tốt :). – TerryA

Trả lời

6

Bạn chưa bao giờ thực sự được xác định xy trên toàn cầu. Bạn chỉ xác định nó trong hàm khi bạn đã thực hiện def smaller_num(x, y).

Khi bạn làm smaller_num(x= input("Enter first number:-") ,y= input("Enter second number:-")) , bạn không tạo các biến được gọi là xy, bạn chỉ đang tạo tham số cho hàm của mình.

Để sửa chữa mã của bạn, tạo ra các biến xy trước khi bạn gọi hàm của bạn:

def smaller_num(x, y): ## Can be rephrased to def smaller_num(x, y): 
    if x > y:   ##       if x > y: 
     number = y  ##        return y 
    else:    ##       else: 
     number = x  ##        return x 
return number 

x = input("Enter first number:-") 
y = input("Enter second number:-") 
result = smaller_num(x, y) 
print("The smaller number between " + str(x) + " and " + str(y) + " is " + str(result)) 

Lý do khác mã của bạn không hoạt động là bởi vì bạn không gán giá trị trả về của trở lại một biến. Khi bạn return một cái gì đó từ một hàm và một lần nữa khi bạn gọi hàm, bạn cần gán giá trị cho một biến, như tôi có: result = smaller_num(x, y).

Khi bạn gọi hàm của mình, bạn không bao giờ gán giá trị cho biến, do đó, nó đã bị lãng phí.


Ngoài ra, bạn có đang sử dụng Python 3 hoặc 2.7 không? Trong python 3 sử dụng input() sẽ trả về một chuỗi và để chuyển đổi thành số nguyên, bạn có thể gọi int() xung quanh chức năng input().

+0

Tôi thực sự đánh giá cao thông tin phản hồi để biết tại sao bài viết của tôi bị downvoted, cảm ơn :) – TerryA

+0

Điều đó không đúng, bạn có thể gọi và gán x và y làm 'raw_input' trong các tham số của bạn và nó hoạt động hoàn toàn tốt. Việc thiếu lưu trữ kết quả là vấn đề duy nhất. – SuperBiasedMan

+0

@SuperBiasedMan Trừ khi tôi đang đọc mã sai, những gì tôi chỉ ra là một lỗi, vì trong dòng cuối cùng, ông nói 'str (x)', mà không bao giờ được tạo ra trên toàn cầu. Tương tự với 'str (y)' – TerryA

3

này sẽ làm việc:

def smaller_num(x,y): 

    if x>y: 
     number= y 
    else: 
     number= x 
    return number 


x = input("Enter first number:-") 

y = input("Enter second number:-") 

smaller = smaller_num(x,y) 

print("The smaller number between " + str(x) + " and " + str(y) + " is " + str(smaller)) 
1

này nên làm việc:

def smaller_num(x,y): 
    if x>y: 
     number = y 
    else: 
     number = x 
    return number 

x = input("Enter first number:-") 
y = input("Enter second number:-") 

print("The smaller number between " + str(x) + " and " + str(y) + " is " + str(smaller_num(x,y))) 
0

bạn không thể sử dụng toán tử gán bên trong def, nhưng

print(str(smaller_num(input("Enter first number:-"),input("Enter second number:-")))) 

công trình tốt.

Các vấn đề liên quan